您的位置:首页 > 其它

sed简单用法

2015-11-02 11:54 204 查看
sed是善于处理行的,善于处理文本中的一行一行又一行!

说一下简单的sed的知识:
sed的基本原理: 首先把文本中的内容,拿到内存中的模式空间去一行一行的做比较,比较完后,将模式空间里剩下的内容做出显示,输出到屏幕上。
所以,原理上,sed不会对文本内容本身做改变。
几个简单命令:
# sed '1,2d' 1.txt //删除1.txt文本中的第1行到第2行。
# sed '1,$d' 1.txt //删除第1行到最后一行,$d代表最后一行,1和$之间有逗号。
# sed '1,+2d' 1.txt //删除第1行后,再删除2行。
# sed '/^\//d' 1.txt //删除首字母是“/”开头的行!“^”这个符号,在键盘的阿拉伯数字6
的上面,代表以什么什么开头。 “\”,这个我们叫做反斜线,这 个可以去掉“/”的特殊含义,恢复它的字面含义。
====================================================================
#sed '1p' 1.txt //打印第1行

#sed -n '1p' 1.txt //比较和 sed '1p' 1.txt有什么不同,-n的意思是静默模式,所谓静默,
就是只显示出你想要的东西,其他的东西不会输出,我想你会喜欢这个 -n这个选项。

====================================================================
# sed '/^\//a hello world' 1.txt // -a这个选项是追加,append,英语好的同学,直接man sed就行
英语不太好的同学,就记住吧,或者百度,最好记在脑子里。

这句话的意思是,在首字母为“/”的后面追加hello world.

# sed '/^\//a hello linux' 1.txt //-i也是追加,在首字母是“/”的前面追加hello linux
=====================================================================
#sed 's#root#ROOT#g' 1.txt //作用是把root变成ROOT,而且是全局替换,g是global,全局的
意思,s 是替换的意思。

小注: #sed 's#root#ROOT#g' 1.txt 等于 #sed 's/root/ROOT/g' 等于 #sed 's*root*ROOT*g' ,只要是3个相同的字母就可以。
======================================================================
后向引用,自己看看,自己敲敲,琢磨琢磨,不难:
#sed 's#\(root\)#\1R#g' 1.txt //这个“\1”的意思就是代表前面的root,在后面多一个R.
#sed 's#\(root\)#&R#g' 1.txt //这个&的作用也是代表前面的root.
#sed -E 's#r(oot)#R\1#g' //-E的作用是代表了“\”,有了-E,就不用反斜线“\”了
自己动手敲,敲出来的感觉,不需要我多解释。
=======================================================================
#sed -e '1d' '2p' 1.txt //-e 的作用是执行了1d,然后可以继续执行2p. 一次性执行多个命令
=======================================================================
#sed -i '/\/root/a' 1.txt //-i 不能乱用,慎用!!!这个-i直接给改变原来的文件,你自己
没有掌握好的情况下,建议你慎用!

sed 还有很多用法,你可以去百度,可以去man,自己查询,我这里只说了一些常用、常见的用法,东西看上去好像不少,实际上东西不多,对于初学者,我建议,大量的练习,练习,练习,没有好的方法,熟能生巧。想想上一年级的时候学习汉字,就是一个汉字写10遍,甚至更多,所有对于sed而言,你可以试一试不断练习的方法。方法仅供参考! 对于聪明同学而言,不多说!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sed 简单用法