sed 本身是一个管道命令,可以分析standard input,而且sed还可以将数据进行替换删除、新增、选取特定行等功能。
sed [-nefr] 动作
-n : 使用安静模式
-e : 直接在命令行模式上进行sed动作
-f : 写到一个文件中
-i :修改
除了-i时修改文件的内容之外,其他的都只是控制输出显示而已
动作说明 n1,n2 行数,可有可无
a: 新增到此行下
c:替换
d:替换
i:插入此行上
p:打印
s:替换 ‘s/old/new/g’
下面时一些练习:
(1)将/etc/passwd的内容列出并打印行号,同时删除2-5行
nl /etc/passwd | sed '2,5d'
(2)在第二行的下一行加上‘’drink tea‘’
nl /tec/passwd | sed '2a drink tea'
(3)在第二行的上一行加上‘’ drink tea‘’
nl /tec/passwd | sed '2i drink tea'
如果要添加多行的话需要用\进行转移回车符
(4)将2-5行的内容改为No 2-5 number
nl /etc/passwd | sed '2,5c No 2-5 number'
(5)输出第5-7行
nl /tec/passwd | sed -n '5,7p'
(6)去掉以#开头的注释和空行
cat /etc/man.config | grep 'MAN' | sed 's/#.*$//g' | sed '/^$/d'
(7)利用sed将regular_express.txt 的每一行的结尾.改为!
sed -i 's/\.$/\!/g' regular_express.txt
(8)利用sed 直接在regular_express.txt的最后一行添加"#This is a test"
sed -i '$a #This is a test'