通过grep删除文本文件中的空行

FILE

 hello world foo bar 

如何删除这个FILE中的所有空的新行?

命令输出:

FILE

 hello world foo bar 

grep . FILE


(如果你真的想在sed中完成,那么: sed -e /^$/d FILE

(如果你真的想用awk来做,那么: awk /./ FILE

尝试以下操作:

 grep -v -e '^$' 
 with awk, just check for number of fields. no need regex $ more file hello world foo bar $ awk 'NF' file hello world foo bar 

试试这个: sed -i '/^[ \t]*$/d' file-name

它将删除所有没有的空行。 文件中的空格(空格或制表符),即(0或更多)。

注意:在方括号内有一个“空格”,后跟“\ t”。

修饰符-i将强制将更新的内容写回到文件中。 没有这个标志,你可以看到在屏幕上被删除的空行,但实际的文件不会受到影响。

grep '^..' my_file

 THIS IS THE FILE EOF_MYFILE 

它只提供至less2个字符的输出行。

 THIS IS THE FILE EOF_MYFILE 

请参阅grep '^' my_file输出的结果

 THIS IS THE FILE EOF_MYFILE 

也用grep '^.' my_file grep '^.' my_file输出

 THIS IS THE FILE EOF_MYFILE 

尽量试试:

 ex -s +'v/\S/d' -cwq test.txt 

对于多个文件(就地编辑):

 ex -s +'bufdo!v/\S/d' -cxa *.txt 

不修改文件(只在标准输出上打印):

 cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin 

Perl可能是矫枉过正的,但它也可以工作。

删除所有完全空白的行:

 perl -ne 'print if /./' file 

删除所有完全空白的行,或只包含空格:

 perl -ne 'print if ! /^\s*$/' file 

编辑原始文件并生成.bak文件的变体:

 perl -i.bak -ne 'print if ! /^\s*$/' file 

这是一个解决scheme,删除所有空白或只包含空格字符的行:

 grep -v '^[[:space:]]*$' foo.txt