sed를 사용하여 한 번에 한 단계씩 파일을 편집하는 방법을 알고 있지만 실제 sed 스크립트를 만든 다음 파일에서 이를 사용하여 개별 sed 명령과 동일한 작업을 수행하려면 어떻게 해야 합니까? 예를 들어 다음 3개의 sed 명령은 다음과 같습니다.
sed -i '4i\ ' 베이컨 파일
sed -i 's/,/\t\t/' 베이컨 파일
sed -i 's/,/ /' 베이컨 파일
답변1
명령을 파일에 넣기
이 줄을 이라는 스크립트 파일에 넣으세요 script.sed
.
4i\
s/,/\t\t/
s/,/ /
그런 다음 다음과 같이 실행하십시오.
$ sed -i -f script.sed baconFile
독립형 sed 스크립트 만들기
단일 실행 파일로 만들려면 다음을 수행하십시오.
#/bin/bash
sed -i '
4i\
s/,/\t\t/
s/,/ /
' "$@"
위의 줄을 이라는 파일에 넣고 script.bash
실행 가능하게 만들고( chmod +x script.bash
) 다음과 같이 실행합니다.
$ script.bash baconFile
스크립트 파일 생성
이 방법을 사용하여 위에서 언급한 파일을 만들 수 있습니다.
$ cat > script.bash <<EOF
#!/bin/bash
4i\
s/,/\t\t/
s/,/ /
EOF
그러면 스크립트 파일이 생성됩니다. 다음 명령을 사용하여 확인할 수 있습니다.
$ cat script.bash
#!/bin/bash
4i\
s/,/\t\t/
s/,/ /
답변2
sed -i '4i\
s/,/\t\t/
s/,/ /' baconFile
sed는 대부분의 인터프리터처럼 작동하며 여러 명령이 별도의 줄에 있거나 첫 번째 줄이 없으면 오류가 발생할 수 있습니다 ;
.GNU sed
sed 스크립트를 생성하려면 shebang에서 sed 인터프리터에 대한 절대 경로를 제공하기만 하면 됩니다. 그리고 파일이 실행 가능한지 확인하십시오.
#!/bin/sed -f
s/foo/bar/
chmod u+x foo
./foo <<<foo
bar
또는 sed 명령을 사용하여 스크립트를 호출할 수 있습니다.
sed -i -f foo file
답변3
-f
당신은 선택 해야sed -f sed-script
답변4
이를 수행하려면 bash 또는 korn 쉘 스크립트를 작성할 수 있습니다. 동적으로 만들고 싶다면 파일 이름을 인수로 받아들이도록 한 다음 원하는 파일에 대해 sed 명령을 실행할 수 있습니다.
새 파일을 만듭니다.updatefile.sh
#!/bin/bash
#$1 is the first parameter being passed when calling the script. The variable filename will be used to refer to this.
filename=$1
sed '4i\ ' filename
sed 's/,/\t\t/' filename
sed 's/,/ /' filename
updatefile.sh baconFile
그런 다음 파일을 실행하는 세 가지 sed 명령을 모두 실행할 수 있습니다 baconFile
.
또한 g
sed의 옵션은 파일에서 해당 변수의 모든 항목을 업데이트합니다. 예를 들어:
sed 's/,/ /g' filename