请解释这个awk
命令的确切含义:
awk '$0!~/^$/{print $0}'
答案 0 :(得分:7)
删除空白行。条件为$0
(整行)与正则表达式!~
不匹配/^$/
(行的后面紧跟行的结尾)。
与grep -v '^$'
类似
答案 1 :(得分:5)
打印非空输入行。注意:在这种情况下,“空”并不意味着“空白”。
答案 2 :(得分:2)
您的示例可以简单地重写:
awk '!/^$/'
或
sed '/^$/d'
答案 3 :(得分:0)
我想说的是,如果代码不是三重冗余,代码至少是冗余的,具体取决于它的用途。
它的作用是将输入行打印到输出,如果输入行不为空行。
由于awk的标准行为是,如果满足没有以下程序块的条件,则打印输入行,这就足够了:
awk '$0!~/^$/' or even shorter awk '$0!=""'
如果你可以肯定的话,没有一行会被解析为零,甚至是
awk'$0'
可以做到这一点。
答案 4 :(得分:-2)
首先让它可读......
echo '$0!~/^$/{print $0}' | a2p ==> $, = ' '; $\ = "\n"; while (<>) { chomp; if ($_ !~ /^$/) { print $_; } }
和解释。在这种情况下,请勿打印空行。