Joh*_*ohn 23 command-line bash sed
我知道如何使用 sed 一步一步地编辑文件,但是我将如何创建一个实际的 sed 脚本,然后在文件上使用它来执行单个 sed 命令会执行的相同操作?例如这 3 个 sed 命令:
sed -i '4i\' 培根文件
sed -i 's/,/\t\t/' 培根文件
sed -i 's/,//' 培根文件
slm*_*slm 27
将这些行放在名为script.sed.
4i\
s/,/\t\t/
s/,/ /
Run Code Online (Sandbox Code Playgroud)
然后像这样运行它:
$ sed -i -f script.sed baconFile
Run Code Online (Sandbox Code Playgroud)
如果您希望它是单个可执行文件,请执行以下操作:
#/bin/bash
sed -i '
4i\
s/,/\t\t/
s/,/ /
' "$@"
Run Code Online (Sandbox Code Playgroud)
将上述行放入名为 的文件中script.bash,使其可执行 ( chmod +x script.bash,然后像这样运行它:
$ script.bash baconFile
Run Code Online (Sandbox Code Playgroud)
你可以用这个方法来制作我上面提到的文件。
$ cat > script.bash <<EOF
#!/bin/bash
4i\
s/,/\t\t/
s/,/ /
EOF
Run Code Online (Sandbox Code Playgroud)
这将制作脚本文件。您可以使用以下命令进行确认:
$ cat script.bash
#!/bin/bash
4i\
s/,/\t\t/
s/,/ /
Run Code Online (Sandbox Code Playgroud)
sed -i '4i\
s/,/\t\t/
s/,/ /' baconFile
Run Code Online (Sandbox Code Playgroud)
sed 像大多数解释器一样工作,多个命令可以在单独的行上或由;. 如果你没有GNU sed你的第一行可能会导致错误。
要创建一个 sed 脚本,你只需在你的 shebang 中给出你的 sed 解释器的绝对路径。并确保该文件是可执行的。
#!/bin/sed -f
s/foo/bar/
chmod u+x foo
./foo <<<foo
bar
Run Code Online (Sandbox Code Playgroud)
或者脚本可以与 sed 命令一起调用。
sed -i -f foo file