sed:可以将数据进行替换,删除,新增,选取特定行等,(过滤和取行)
-n 安静模式即,加上-n后,只有经过特殊处理的这行被输出到屏幕上
– i 直接修改文件内容而不是只是输出到终端。
-f直接将sed的动作写在一个文件内,
-r支持扩展正则表达式输出
sed 常用内置命令字符
a append(表示在指定行后添加文一或多行)
d delete (删除指定行)
i insert (指定行前插入一行或多行)
p print (表示匹配打印行的内容)
c copy ()
sed 命令太强大,光看看不会的。直接来练习:
1.如在fsed文件中?
[root@centos7 old]#sed ‘2a yesyesyes’ fsed (表示在第二行后增加yesyesyes行)
alfjsajfla
slfjskl
yesyesyes
urwer09we
2.那如果是增加3行呢?
[root@centos7 old]#sed ‘2a ddd\nbbb\ndddn’ fsed
alfjsajfla
slfjskl
ddd
bbb
dddn (切记:\n换行符)
同理d,i,p,c的用法和a 一样
3.如删除文件2到最后一行?
[root@centos7 old]#sed ‘3,$d’ fsed
alfjsajfla
slfjskl ($就是表示最后一行)
4.把所有a替换成W?
[root@centos7 old]#sed ‘s#a#W#g’ fsed
WlfjsWjflW
slfjskl
urwer09we
也可以把第三行替换成BBBB?
[root@centos7 old]#sed ‘3c BBBB’ fsed
alfjsajfla
slfjskl
BBBB
473298473
5.
[root@centos7 old]#echo>fsed (清空文件内容)
[root@centos7 old]#sed -i ‘aaa\nddd\nccc\nuuu\nmmm\n6666\n888\n999’ fsed|nl (nl是加上行号)
1 aa
2 ddd
3 ccc
4 uuu
5 mmm
6 6666
7 888
8 999
好,现在我想让奇数行和偶数行全部合并?
[root@centos7 old]#sed ‘N;s#\n##g’ fsed (N,sed强大的内置命令, 碰到N,会执行”$###g”循环执行把换行符换成空直到文件结束)
aa
dddccc
uuummm
6666888
999
6.-n的应用,仅列出文件中的第2到4行?
[root@centos7 old]#sed -n ‘2,4p’ fsed
aa
ddd
ccc
如果再加上-i, 那相当于直接把2到4行外的所有行删除了?即只留下2到4行
[root@centos7 old]#sed -i -n ‘2,4p’ fsed
[root@centos7 old]#cat fsed
aa
aa
ddd
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96573