linux命令详解(29)用 sed 替换文本,sed命令详解

文章标签: linux,linux-sed
2015-1-22 18:53:54     13 人阅读    

     有时,替换文本的第一步是查找文件里的文本。使用TsedT命令可以编辑文本流。实际上,TsedT 命令是门功能齐全的脚本语言。这一章的示例只涉及用TsedT命令完成简单的文本替换操作。


      熟悉vi文本替换命令的读者会发现Tsed似曾相识T。下面的命令行只会将各行文本里第一次出现
T的Tfrancois替换成chris。首先TsedT通过管道获取输入,然后将输出传给标准输出,即屏幕上:

$ cat myfile.txt | sed s/francois/chris/


     如下例所示,在替换行,即上例的s/francois/chris/末尾加上g,即可将一行文本里的所有francois 全都改成chris。在下面的示例中,输入直接取自文件myfile.txt,输出则定向至mynewfile.txt:

$ sed s/francois/chris/g < myfile.txt > mynewfile.txt


下面这个例子会将T/etc/httpd/conf/httpd.confT文件每一行第一次出现的T/var/wwwT替换 成T/home/wwwT。这里必须用引号和反斜杠转义斜杆,这样TsedT才不会将斜杆解释成分隔符:

$ sed 's/\/var\/www\//\/home\/www\//' < /etc/httpd/conf/httpd.conf


TsedT命令默认的分隔符是斜杆,不过可以根据需要将分隔符改为其他任意字符。碰到字符串包含
斜杆的情况,更改分隔符好处多多。举例来说,上面包含路径的命令行可以用下面任一命令代替:

$ sed 's-/var/www/-/home/www/-' < /etc/httpd/conf/httpd.conf
$ sed 'sD/var/www/D/home/www/D' < /etc/httpd/conf/httpd.conf


第一行里TsedT分隔符为短划线(-),第二行里TsedT分隔符为字母D。
TsedT命令可以一次执T行多个替T换T操作T,每个替换操作前面需要加一个T-eT。在下面的例子中, Tmyfile.txtT文本流里出现的所有francois都会替换成FRANCOIS,chris则替换成CHRIS:

$ sed -e s/francois/FRANCOIS/g -e s/chris/CHRIS/g < myfile.txt


使用TsedT可以在文本流里添加换行符。在下面的TEnterT处,按下回车键。第二行的>由bash产 生,不用键入。

$ echo aaabccc | sed 's/b/\Enter
> /' aaa ccc


该技巧对TsedT替换命令的左侧并不管用。替换换行符时,使用TtrT命令更简单。

上面运行的file命令表明,bash shell提供了多种格式的文档文件。file命令会查看文件内容,确定文件是否包含troff标记(


原文地址:http://www.itmmd.com/201501/539.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

linux命令详解(30)用 tr 转换或删除字符,linux tr命令详解   上一篇
下一篇  jQuery教程(31)-jQuery插件开发之全局函数插件

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!