linux - shell判断空行 - shell去除首尾空格



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

grep . FILE

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

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

https://src-bin.com

FILE

hello

world

foo

bar

如何删除此FILE中的所有空行?

输出命令:

FILE

hello
world
foo
bar

Answer #1

Perl可能有点矫枉过正,但它的工作原理也一样。

删除所有完全空白的行:

perl -ne 'print if /./' file

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

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

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

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

Answer #2

尝试exway:

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

Answer #3

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

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

注意:方括号内有'空格'后跟'\ t'。

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


Answer #4

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

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

Answer #5
with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar




text-processing