我有一个有很多空行的文档。
当两个或多个在一起时如何删除它们?
我尝试了sed "s/\n\n//"
文件,没有成功。没有错误。
答案1
sed '/^$/d'
sed
是面向行的,因此可以考虑“2个或更多特定字节”,除了当该字节是换行符时。然后你必须想出一些适用于整条生产线的方法。
答案2
不需要sed
。grep
会做:
grep .
(即grep
,SPC,点,即匹配任何包含至少一个字符的行)。
还有:
tr -s '\n'
(将任何换行符序列压缩为一个)。
正如 Chris 所指出的,两者并不等同,因为删除空行(如上面的第一个解决方案和大多数其他答案集中在此处)与在第一行为空的情况下按要求压缩换行符序列不同。只需要一前导换行符使第一行为空。
答案3
如果您想为任何给定的空行序列保留一个空行,您可以这样做:
sed -e '/./b' -e :n -e 'N;s/\n$//;tn'
答案4
对于大多数此类答案,首先需要删除尾随空格。删除双倍换行符会删除所有空白行。(想一想)。
从字面上解释,OP 希望“如果存在重复的空行,则从文件中删除所有空行”。
典型的用户希望“仅删除重复的空白行”。
为此,首先删除尾随空白,然后通过 cat -s 进行管道传输
sed s/[[:space:]]*$// | cat -s
然而,这不会删除多余的前导或尾随空白行。