스트림 편집기-워크 플로

이 장에서는 SED가 정확히 어떻게 작동하는지 살펴 보겠습니다. 전문 SED 사용자가 되려면 그 내부를 알아야합니다. SED는 읽기, 실행 및 표시와 같은 간단한 워크 플로를 따릅니다. 다음 다이어그램은 워크 플로를 보여줍니다.

  • Read: SED는 입력 스트림 (파일, 파이프 또는 표준 입력)에서 한 줄을 읽고이를 호출하는 내부 버퍼에 저장합니다. pattern buffer.

  • Execute: 모든 SED 명령이 패턴 버퍼에 순차적으로 적용됩니다. 기본적으로 SED 명령은 행 주소 지정이 지정되지 않는 한 모든 행 (전역)에 적용됩니다.

  • Display: (수정 된) 내용을 출력 스트림으로 보냅니다. 데이터를 보낸 후 패턴 버퍼는 비어 있습니다.

  • 위의 과정은 파일이 소진 될 때까지 반복됩니다.

참고 사항

  • 패턴 버퍼는 SED에서 사용하는 개인 메모리 내 휘발성 저장 영역입니다.

  • 기본적으로 모든 SED 명령은 패턴 버퍼에 적용되므로 입력 파일은 변경되지 않습니다. GNU SED는 입력 파일을 한곳에서 수정하는 방법을 제공합니다. 이후 섹션에서 이에 대해 살펴 보겠습니다.

  • 라는 또 다른 메모리 영역이 있습니다. hold buffer이것은 또한 개인, 메모리, 휘발성 저장 영역입니다. 데이터는 나중에 검색하기 위해 보류 버퍼에 저장할 수 있습니다. 각주기가 끝날 때 SED는 패턴 버퍼의 내용을 제거하지만 보류 버퍼의 내용은 SED주기 사이에 지속적으로 유지됩니다. 그러나 SED 명령은 홀드 버퍼에서 직접 실행할 수 없으므로 SED는 홀드 버퍼와 패턴 버퍼 사이의 데이터 이동을 허용합니다.

  • 처음에는 패턴 및 보류 버퍼가 모두 비어 있습니다.

  • 입력 파일이 제공되지 않으면 SED는 표준 입력 스트림 (stdin)에서 입력을받습니다.

  • 주소 범위가 기본적으로 제공되지 않으면 SED는 각 라인에서 작동합니다.

텍스트 파일을 만들어 보겠습니다. quote.txt 유명한 작가 Paulo Coelho의 인용문을 포함합니다.

[jerry]$ vi quote.txt 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

SED의 워크 플로우를 이해하기 위해 SED를 사용하여 quote.txt 파일의 내용을 표시해 보겠습니다. 이 예제는cat 명령.

[jerry]$ sed '' quote.txt

위의 코드가 실행되면 다음과 같은 결과가 나옵니다.

There is only one thing that makes a dream impossible to achieve: the fear of failure.

위의 예에서 quote.txt는 입력 파일 이름이며 그 앞에 SED 명령을 의미하는 한 쌍의 작은 따옴표가 있습니다. 이 작업을 설명하겠습니다.

첫 번째 SED는 입력 파일 quote.txt에서 한 줄을 읽고 패턴 버퍼에 저장합니다. 그런 다음 패턴 버퍼에 SED 명령을 적용합니다. 우리의 경우에는 SED 명령이 없으므로 패턴 버퍼에서 작업이 수행되지 않습니다. 마지막으로 표준 출력에서 ​​패턴 버퍼의 내용을 삭제하고 인쇄합니다. 간단하지 않나요?

다음 예에서 SED는 표준 입력 스트림에서 입력을받습니다.

[jerry]$ sed '' 
       
      

위의 코드가 실행되면 다음과 같은 결과가 나옵니다.

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
There is only one thing that makes a dream impossible to achieve: the fear of failure.

여기서 첫 번째 줄은 키보드를 통해 입력되고 두 번째 줄은 SED에서 생성 된 출력입니다. SED 세션을 종료하려면 ctrl-D (^ D)를 누르십시오.