究竟如何建立 sed 腳本並使用它來編輯檔案?

究竟如何建立 sed 腳本並使用它來編輯檔案?

我知道如何使用 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 shell 腳本來執行此操作。如果你想讓它動態化,你可以讓它接受一個檔案名稱作為參數,你可以在任何你想要的檔案上執行這些 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

此外,gsed 中的選項將更新檔案中所有出現的變數。例如:

sed 's/,/ /g' filename

相關內容