Sed 从文本文件中删除单行段落的命令行方法
我有一个.txt文件,其中包含两种类型的段落: 一些语句和数字(02)等,后面跟着一个返回值Sed 从文本文件中删除单行段落的命令行方法,sed,awk,Sed,Awk,我有一个.txt文件,其中包含两种类型的段落: 一些语句和数字(02)等,后面跟着一个返回值 还有一些东西,然后是两次返回 然后是一个单行段落,后跟两个返回值 再加上一些双线文本返回 还有一些文字 我想从文本文件中删除所有单行段落。结果是: 一些语句和数字(02)等,后面跟着一个返回值 还有一些东西,然后是两次返回 再加上一些双线文本返回 更多的文字 我一直在尝试使用sed和awk来实现这一点,但在使用正则表达式时遇到了一些问题,该正则表达式将查找后跟一些字符的换行符,并以两个连续的换行符结尾\
还有一些东西,然后是两次返回 然后是一个单行段落,后跟两个返回值 再加上一些双线文本返回
还有一些文字 我想从文本文件中删除所有单行段落。结果是: 一些语句和数字(02)等,后面跟着一个返回值
还有一些东西,然后是两次返回 再加上一些双线文本返回
更多的文字 我一直在尝试使用sed和awk来实现这一点,但在使用正则表达式时遇到了一些问题,该正则表达式将查找后跟一些字符的换行符,并以两个连续的换行符结尾\n\n 到底有没有办法用一行字来完成这个任务,还是我必须写一个脚本来逐行阅读,确定段落的长度,然后用这种方式把它去掉 谢谢
awk -F '\n' -v RS='' -v ORS='\n\n' 'NF>1' input.txt
- 当
设置为空字符串时,每条记录始终以遇到的第一个空行结束RS
- 当
设置为空字符串,并且RS
设置为单个字符时,换行符始终充当字段分隔符FS
我倾向于使用Perl进行面向段落的解析:
perl -00 -lne 'print if tr/\n/\n/ > 0'
这很有魅力。谢谢我应该在4小时前问这个:)。你能解释一下吗-F表示记录分隔符是一个换行符,如果有超过1个换行符,则打印?在我的一些文件中,由于某些段落非常大(没有空行),我遇到了awk 3000字节的记录大小限制。下面提到的perl方法没有遇到这个问题。