스트림 편집기-워크 플로
이 장에서는 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)를 누르십시오.