ed에서 ed 스크립트 실행

ed에서 ed 스크립트 실행

ed 파일에서 공백, 후행 공백, 빈 줄 등을 정리하는 일련의 정규식이 포함된 "cleanup"이라는 스크립트 파일을 만들었습니다. 나는 다음과 같이 실행합니다 :

ed [name-of-file] < [name-of-script]

가끔 현재 ed에서 편집 중인 파일에 스크립트를 실행하고 싶을 때가 있습니다. 이 작업을 수행하는 데 필요한 구문이 확실하지 않습니다.

다음은 예제 스크립트입니다:

g/^  */s///
# Remove blank spaces at the beginning of a line
g/  *$/s///
# Remove trailing whitespace at end of line
g/   */s// /g
# Remove additional spaces between words
g/^$/d
# delete blank lines
g/\(‘‘\|’’\)/s//"/g
# Remove curly braces
g/\(“\|”\)/s//"/g
g/\(‘\|’\)/s//'/g
# idem
,p
Q

답변1

당신은 사용할 수 있습니다

e !ed -s % <script

수정된 편집 버퍼를 출력하여 스크립트가 끝나는 경우, 즉 스크립트가 ,p및 으로 끝나는 경우입니다 Q. 이는 현재 편집 버퍼의 내용을 after 명령의 출력으로 대체합니다 !. 명령의 은 %현재 파일 이름으로 자동으로 대체됩니다(이 명령은 현재 파일 이름을 변경하지 않습니다).

w생성한 사람이 ed이전에 편집한 내용을 볼 수 있도록 이 작업을 먼저 수행하는 것을 잊지 마십시오 .

(이것은 예제 스크립트에는 적용되지 않는 것 같지만...) 스크립트가 파일을 내부 편집하여 마지막에 파일이 디스크에 다시 저장되는 경우 다음을 사용하십시오.

!ed -s % <script
e

그러면 ed셸에서 명령이 실행되고 현재 편집 버퍼가 업데이트된 파일 내용으로 대체됩니다. 다시 한번, 먼저 잊지 마세요 w.


추가 설명:

e !somecommand명령은 현재 편집 버퍼를 삭제하고 이를 의 출력으로 대체합니다 somecommand.

이는 편집 스크립트가 표준 출력의 최종 결과를 출력하고 해당 출력을 편집하려는 경우 이것이 e !ed -s % <script적절할 것임을 의미합니다.script

추가 인수 없이 이 e명령은 현재 파일을 다시 열고 편집 버퍼를 파일 내용으로 바꿉니다. 이 앞에 !somecommandwhere가 있는 경우somecommand 현재 파일 변경, 이러한 변경 사항을 편집 세션에 병합하는 방법은 다음과 같습니다.

이는 편집 스크립트가 수정된 문서를 표준 출력에 기록하는 대신 동일한 이름으로 다시 저장하는 경우 !ed -s % <script후자를 사용해야 할 수도 있음을 의미합니다.escript

관련 정보