sed 命令赏析

发表于:2007-05-26来源:作者:点击数: 标签:
1、将文件中的重复行删除 sed -n 'G; s/\n//;/^\(.*\n\).*\n/d;s/\n//;h;P' w 将文件中的重复行删除,重复行不一定联在一起。注意防止缓冲区溢出。 读入一行,将hold区追加到pattern区,将第一个\n换成两个,查找是否有匹配,有则删除后重新下一次循环,否则

1、将文件中的重复行删除

sed  -n 'G; s/\n/&&/;/^\(.*\n\).*\n/d;s/\n//;h;P'  w

将文件中的重复行删除,重复行不一定联在一起。注意防止缓冲区溢出。

读入一行,将hold区追加到pattern区,将第一个\n换成两个,查找是否有匹配,有则删除后重新下一次循环,否则将\n\n换回头,将pattern区copy到hold区,将第一行打出,开始下一个循环。

如简化成  sed  -n 'G; /^\(.*\n\).*/d;h;P'  w

则原文的空行被删除。

 

2、删去大部分HTML标签(供多行标签))

 
sed -e :a -e 's/<[^>]*>//g;/

标签可跨行,如在一行替换掉<...>内容后还有"<"字符则读入下一行,再次进行替换,否则打印出后清空pattern区读入下一行处理。

3、删除每个段落后的一行(每个段落由空行分隔)

 sed -n '/^$/;/./'  w

命令执行时,如果不是空行那么交换模式空间和保留空间,如果交换后
模式空间不为空,则打印模式空间中内容;如果是空行,那么打印模式空间
间中的内容,也就是打印空行...以此类推,出现结果.

原文转自:http://www.ltesting.net