+ -
当前位置:首页 → 问答吧 → shell文本过滤问题

shell文本过滤问题

时间:2011-05-19

来源:互联网

现在有一个文件,内容如下:

script_filename = /aaa/bbb/1.php
[0xbfaf8e70] query() /:84
[0xbfaf9450] get_results() /:228
[0xbfaf97e0] iGetByPseridCity() /:15

script_filename = /aaa/bbb/123.php
[0xbfaf8dd0] query() 1:84
[0xbfaf93b0] get_results() 1:228
[0xbfaf97e0] iGetByPseridCity() 1:16

script_filename = /aaa/bbb/1.php
[0xbfaf8e70] query() /:84
[0xbfaf9450] get_results() /:228
[0xbfaf97e0] iGetByPseridCity() /:19

现在想过滤去掉重复的script_filename行,后得出的结果应该是;

script_filename = /aaa/bbb/1.php
[0xbfaf8e70] query() /:84
[0xbfaf9450] get_results() /:228
[0xbfaf97e0] iGetByPseridCity() /:15

script_filename = /aaa/bbb/123.php
[0xbfaf8dd0] query() 1:84
[0xbfaf93b0] get_results() 1:228
[0xbfaf97e0] iGetByPseridCity() 1:16

作者: zhangheng520   发布时间: 2011-05-19

  1. awk -F'\n' -v RS='\n\n' -v ORS='\n\n' '!a[$1]++'
复制代码

作者: MaskRay   发布时间: 2011-05-19

回复 zhangheng520
  1. awk '!a[$0]++' RS= FS='\n\n' file
复制代码

作者: yinyuemi   发布时间: 2011-05-19

  1. awk -F'\n' -v RS= -v ORS='\n\n' '!a[$1]++'
复制代码

作者: MaskRay   发布时间: 2011-05-19

感谢哈, 都能使用...........

作者: zhangheng520   发布时间: 2011-05-19

本帖最后由 zooyo 于 2011-05-19 13:16 编辑
  1. awk 'BEGIN{RS="";FS="\n";ORS="\n\n"}!a[$1]++' file
  2. script_filename = /aaa/bbb/1.php
  3. [0xbfaf8e70] query() /:84
  4. [0xbfaf9450] get_results() /:228
  5. [0xbfaf97e0] iGetByPseridCity() /:15

  6. script_filename = /aaa/bbb/123.php
  7. [0xbfaf8dd0] query() 1:84
  8. [0xbfaf93b0] get_results() 1:228
  9. [0xbfaf97e0] iGetByPseridCity() 1:16
复制代码

作者: zooyo   发布时间: 2011-05-19