使用sed删除空白行之前的所有内容

时间:2015-06-03 23:43:04

标签: linux windows bash sed

假设我有一个类似这样的文件:

"Testing is important"

Nothing is impossible

输出应为:

Nothing is impossible

这意味着sed在新行之前删除了所有内容。另外,我需要确保它适用于Windows上的bash。

请帮忙。

3 个答案:

答案 0 :(得分:2)

你可以试试这个

sed '1,/^\s*$/d' file  

\ s是空白,与

相同
sed '1,/^[[:blank:]]*$/d' file  

答案 1 :(得分:0)

Sed支持将数字作为数字和匹配的正则表达式进行寻址。在您的情况下,您可以删除从1开始的所有行,并以空行结束:

sed -e '1,/^$/d'

在Windows上,您的文件可能包含回车符,在这种情况下您可以使用:

sed -e '1,/^\r*$/d'

(假设是GNU sed)

答案 2 :(得分:0)

要在最后一个空白行后允许多个空行和多行,您可以使用以下内容:

awk 'BEGIN{RS=ORS=""}{a=$0}END{print a}' file

这会取消记录分隔符RS,以便将每个块/段视为单独的记录。它将每个记录分配给变量a,然后在处理完文件后打印a的最后一个值。输出记录分隔符ORS也未设置,因此不会在最终块中附加换行符。