究竟如何创建 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

相关内容