四.执行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的主要内容,如果未能解决你的问题,请参考以下文章

shell中执行sed命令

正则四

系统字符集导致的sed 执行完成不退出

打开高效文本编辑之门_调用Linux的sed命令

解决ssh远程执行命令无法使用awk/sed的问题

Linux三剑客--sed编辑器基本操作规范 详细解读