您的位置:首页 > 运维架构 > Shell

shell学习笔记(1)-sed详解

2012-02-21 14:23 176 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/neuharth/article/details/7279424

shell学习笔记(1)-sed详解


sed处理的对象是文件的数据流。工作模式是:对比每一数据行,若符合样式,就执行指定的操作。
sed的语法如下:
sed ‘样式命令’ 文件
意思是:如果文件中的某一行符合“样式”,就只想指定的sed命令,如删除(d)或取代(s).

这里的”样式”可以使用//含括,表示寻找之意;也可以指定数据行的范围,如:1,6表示作用范围是
由第1行到第6行;还可以使用:/aa/,/dd/表示作用范围是含有aa的数据行到含有dd的数据行。

注意:sed不会更改更改原 文件的内容。它的工作方式是读取文件的内容,经流编辑之后,将结果
输出到标准输出。因此,要想保存sed的处理结果,得自行运用转向就爱那个结果转存。

sed的各种用法举例:
1.删除文件某一段范围的数据行
sed ’1,4d’ filename
说明:把第一行到第四行的数据删除,剩下的显示出来。d是sed的删除命令。
2.将含有“样式”的数据行删除
sed ‘/linuxboy/d’ filename
说明:将含有linuxboy的行删除,剩下的现实出来。
sed ‘/[0-9]\{3\}/d’ filename
说明:把含有“三位数”的行删除,剩下的现实出来。
sed ‘/^$/d’ filename
说明:把文件中的空行删除,剩下的现实出来。
3.把不含有“样式”的行删除
sed ‘/linuxboy/!d’ filename
说明:把不含有linuxboy的行删除,剩下的现实出来,!是否定的意思。
4.把含有“样式”的数据行显示出来
sed -n ‘/linuxboy/p’ filename
说明:把含有linuxboy的行显示出来,
5.取代(s)
sed -n ‘s/hello/linuxboy/p’ filename
说明:这里s是sed的取代命令,第一对//是搜索的目标,也就是被取代的字符。第二对//是置换的字符。
上面的命令只会取代一行中第一个出现的hello,如想全部置换,要加全局命令g,如:
sed -n ‘s/hello/linuxboy/gp’ filename
说明:这样就可以吧文件中所有出现的hello全部置换成linuxboy
sed ‘s/linuxboy//gp’ filename
说明:删除文件中所有出现的linuxboy
sed ‘s/^..//’ filename
说明:删除每行开头的两个字符
sed ‘s/..$//’ filename
说明:删除每行末的两个字符
6.找到符合“样式”的数据行后,在进行取代
sed -n ‘/aa/s/hello/linuxboy/p’ fielname
说明:找到含有aa的数据行后,再将hello置换为linuxboy
sed -n ‘/aa/,/dd/s/hello/linuxboy/gp’ filename
说明:就含有aa到含有bb的那几行中所有的hello置换为linuxboy
sed -n ’2,4s/hello/linuxboy/gp’ filename
说明:将第2行到第4行所有的hello置换为linuxboy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: