通过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