四.执行sed
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四.执行sed相关的知识,希望对你有一定的参考价值。
1. 单行内执行多个sed命令
(1) 使用命令选项-e
多命令选项-e使用方法如下:
sed -e ‘command-1‘ -e ‘command-2‘ -e ‘command-3‘
(2) 使用\折行执行多个命令
在执行很长的命令时,可以使用\来把命令折到多行
$ sed -n -e ‘/^root/ p‘ \
-e ‘/^nobody/ p‘ \
-e ‘/^mail/ p‘ \
/etc/passwd
(3) 使用{}把多个命令组合
如果要执行多个sed命令,可以使用{} 把他们组合起来执行。
$ sed -n ‘{
/^root/ p
/^nobody/ p
/^mail/ p
}‘ /etc/passwd
2.sed脚本文件
如果需要重复执行一组sed命令,那么可以建立sed脚本文件,里面包含所有要执行的sed命令, 然后用-f选项来使用。例如:
首先建立下面文件,里面包含所有要执行的sed命令:
$ cat mycommands.sed
s/\([^,]*\),\(\[^,]*\),\((.*)\).*/\2,\1,\3/g
s/^.*/<&>/
s/Developer/IT Manager/
s/Manager/Director/
现在执行脚本里面的命令:
$ sed -f mycommands.sed employee.txt
<101,John Doe,CEO>
<102,Jason Smith,IT Director>
<103,Raj Reddy,Sysadmin>
<104,Anand Ram,IT Director>
<105,Jane Miller,Sales Director>
3.sed注释
sed注释以#开头。写脚本时,最好加上注释,否则后面很难看懂脚本到底干啥的
4.直接修改输入文件
到目前为止,我们知道sed默认不会修改输入文件,它只会把输出打印到标准输出上。
我们也可以使用-i命令,来直接修改输入文件,例如:
$ sed -i ‘s/John/Johnny/‘ employee.txt
再次提醒: -i 会修改输入文件。请务必小心,一个保护性的措施是,在-i后面加上备份扩展,这一sed就会在修改原始文件之前,备份一份。例如:
$ sed -ibak ‘s/John/Johnny/‘ employee.txt
以上是关于四.执行sed的主要内容,如果未能解决你的问题,请参考以下文章