命令行方法从文本文件中删除单行段落

时间:2012-04-11 16:08:47

标签: sed awk

我有一个包含两种段落的.txt文件:

  

一些陈述和数字(02)等后面的返回
  有一些更多的东西,然后是两个回报

     

然后是一个单行段落,后面跟着两个返回

     

再加上一些双行文字返回
  更多文字。

我想从文本文件中删除所有单行段落。结果是:

  

一些陈述和数字(02)等后面的返回
  有一些更多的东西,然后是两个回报

     

再加上一些双行文字返回
  更多文字

我一直试图用sed和awk来做这件事,但是我一直在遇到一个问题,它会出现一个正则表达式,它会寻找换行符后跟一些字符并以两个连续的换行符结束\ n \ n。

有没有办法用一个内衬来做这个或者我将不得不写一个脚本逐行读取并确定段落的长度并将其剥离出来?

感谢。

2 个答案:

答案 0 :(得分:1)

awk -F '\n' -v RS='' -v ORS='\n\n' 'NF>1' input.txt
  • RS设置为空字符串时,每条记录总是在遇到的第一个空行处结束。
  • RS设置为空字符串,并且FS设置为单个字符时,换行符始终充当字段分隔符。

[read more]

答案 1 :(得分:1)

我倾向于使用Perl来进行面向段落的解析:

perl -00 -lne 'print if tr/\n/\n/ > 0'