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
명령은 현재 파일을 다시 열고 편집 버퍼를 파일 내용으로 바꿉니다. 이 앞에 !somecommand
where가 있는 경우somecommand
현재 파일 변경, 이러한 변경 사항을 편집 세션에 병합하는 방법은 다음과 같습니다.
이는 편집 스크립트가 수정된 문서를 표준 출력에 기록하는 대신 동일한 이름으로 다시 저장하는 경우 !ed -s % <script
후자를 사용해야 할 수도 있음을 의미합니다.e
script