답변1
sed
명령줄에 입력된(또는 셸 스크립트에 포함된) 스크립트의 길이는 셸에서 허용하는 최대 명령줄 길이(최신 셸의 경우 메가바이트)까지 가능합니다.도 있습니다아니요스크립트가 두 가지 이상의 작업을 수행하도록 하려면
-e
해당 스크립트를 여러 번 사용해야 합니다.sed
개행이나 세미콜론을 사용하여 여러 명령을 구분할 수 있습니다.예를 들면 다음과 같습니다.
sed -e 's/foo/bar/' -e 's/abc/def/'
넌 할 수있어:
sed -e 's/foo/bar/; s/abc/def/'
또는:
sed -e 's/foo/bar s/abc/def'
sh와 마찬가지로 명령문 사이의 추가 공백은 중요하지 않습니다.
;
위의 첫 번째 예 뒤에는 공백을 사용했고, 두 번째 예에서는 가독성을 높이기 위해 들여쓰기에 더 많은 공백을 사용했습니다 .일부
sed
명령은 가 아닌 줄 바꿈으로만 종료됩니다;
. 이는;
sed 명령 구분 기호 및 줄 바꿈의 일반 규칙에 대한 잘 문서화된 예외입니다. 자세한 내용은 참조https://www.gnu.org/software/sed/manual/html_node/Multiple-commands-syntax.html(이 문서는 모든/대부분의 버전에 적용됩니다sed
- GNU에 대한 비표준 확장은 언급될 때 언급됩니다).예를 들어, 특정 문자열 바로 뒤에 여러 줄의 텍스트를 추가하려는 경우 (append) 명령은
a
개행 문자로만 끝날 수 있는 명령 중 하나입니다.sed
/search-string-here/ a\ text line 1 ; semicolons are just text\ text line 2 ; and more text here\ <more sed commands can go here>
sed
스크립트는 다음과 같습니다.어느sed
스크립트를 파일에 넣고 각 명령을 줄 바꿈(또는 둘 다)으로 구분 하세요sed
.;
다음과 같이 실행하세요:sed -f scriptfilename ...
sed
다른 스크립팅 언어와 마찬가지로 독립형 스크립트를 작성할 수 있습니다 . 첫 번째 줄로chmod +x
만들면#!/bin/sed -f
실행 가능해질 수도 있습니다 .예를 들어:
#!/bin/sed -f s/foo/bar/ s/abc/def/
sed
단순한 "명령"이 아닌 스크립팅 언어입니다. 대부분의 사람들은 파이프라인에서 작고 간단한 정규식 대체 작업을 수행하기 위해 이 언어를 사용하지만sed
그 이상을 수행할 수 있습니다.man sed
자세한 내용은 참조하십시오 . GNU는sed
또한 완전한 문서를 제공합니다텍사스 정보 네트워크체재. 실행info sed
하여 읽으세요(또는 뷰어가 설치되어 있는pinfo sed
경우pinfo
훨씬 우수합니다info
). 동일한 문서가 다음 사이트에서 다양한 형식으로 제공됩니다.https://www.gnu.org/software/sed/manual/.
답변2
명령줄의 최대 길이입니다. 명령줄 길이에 대한 제한은 셸이 아니라 운영 체제에 의해 적용됩니다. 이 제한은 일반적으로 수백 킬로바이트 범위입니다. POSIX는 이 제한 ARG_MAX를 나타내며 POSIX 호환 시스템에서는 다음을 사용하여 이를 쿼리할 수 있습니다.
$ getconf ARG_MAX # Get argument limit in bytes
시험:
$ sed $(printf ' -e s/%s//g' $(seq 0001000000)) file