我正在尝试使用sed删除空行:
sed '/^$/d'
但我运气不佳。
例如,我有这样几行:
xxxxxx
yyyyyy
zzzzzz
我希望它是这样的:
xxxxxx
yyyyyy
zzzzzz
这个的代码应该是什么?
我正在尝试使用sed删除空行:
sed '/^$/d'
但我运气不佳。
例如,我有这样几行:
xxxxxx
yyyyyy
zzzzzz
我希望它是这样的:
xxxxxx
yyyyyy
zzzzzz
这个的代码应该是什么?
当前回答
我相信这是最简单和最快的方法:
cat file.txt | grep .
如果你需要忽略所有空白行,那么试试这个:
cat file.txt | grep '\S'
例子:
s="\
\
a\
b\
\
Below is TAB:\
\
Below is space:\
\
c\
\
"; echo "$s" | grep . | wc -l; echo "$s" | grep '\S' | wc -l
输出
7
5
其他回答
使用vim编辑器删除空行
美元:% s / ^ \ n / / g
sed
' / ^[[:空间:]]*美元/ d ' ' / ^ \ s *美元/ d ' ' / ^ $ / d ' - n ' / ^ \ s *美元/ !p '
grep
. - v“^ $” - v ' ^ \ s * $ ' - v " ^[[:空间:]]*美元”
awk
/。/ “NF” “长度” '/^[\t]*$/ {next;} {print}' ”!/ ^ \ [t] * $ / '
我错过了awk的解决方案:
awk 'NF' file
这将返回:
xxxxxx
yyyyyy
zzzzzz
这是如何工作的呢?因为NF代表“字段的数量”,那些为空的行有0个字段,因此awk的计算结果为0到False,并且不打印任何行;但是,如果至少有一个字段,则求值为True,并使awk执行默认操作:打印当前行。
对我来说,使用FreeBSD 10.1和sed只工作了这个解决方案:
sed -e '/^[ ]*$/d' "testfile"
[]里面有空格和制表符。
测试文件包含:
fffffff next 1 tabline ffffffffffff
ffffffff next 1 Space line ffffffffffff
ffffffff empty 1 lines ffffffffffff
============ EOF =============
这也适用于awk。
awk '!/^$/' file
xxxxxx
yyyyyy
zzzzzz