sed使用一例
时间:2005-08-03 来源:fangzhang
今天帮人写了一段sed脚本,作用是对文件中所有以@结尾的行,去掉@与换行符,即与下一行合并。
折腾了半天才写完。简单的用's/@ //g'是不行的,因为sed以行为单位操作,而行尾的换行符不在处理的pattern中,也就是说这样是找不到换行符的。最后写成这样的代码,
:begin
/@$/{
N
s/@ //g
b begin
}
这里首先匹配以@为结尾的行,然后用N将下一行结上成为一个新的含换行符的pattern,再作替换。b跳转的作用是对付多个连续的需要转换的行。执行时只要以sed -f scriptfile sourcefile的形式就可以了。只是有一个问题,当sourcefile最后一行同样以@结尾时,则由该行参与所生成的行无法输出。
Unix不愧为有悠久CLI传统的操作系统,其文本处理工具种类丰富而功能强大。而用惯了windows的我们对这方面的应用所知实在太少了。
折腾了半天才写完。简单的用's/@ //g'是不行的,因为sed以行为单位操作,而行尾的换行符不在处理的pattern中,也就是说这样是找不到换行符的。最后写成这样的代码,
:begin
/@$/{
N
s/@ //g
b begin
}
这里首先匹配以@为结尾的行,然后用N将下一行结上成为一个新的含换行符的pattern,再作替换。b跳转的作用是对付多个连续的需要转换的行。执行时只要以sed -f scriptfile sourcefile的形式就可以了。只是有一个问题,当sourcefile最后一行同样以@结尾时,则由该行参与所生成的行无法输出。
Unix不愧为有悠久CLI传统的操作系统,其文本处理工具种类丰富而功能强大。而用惯了windows的我们对这方面的应用所知实在太少了。
相关阅读 更多 +