解释这个awk命令

时间:2010-12-28 20:04:45

标签: awk

请解释这个awk命令的确切含义:

awk '$0!~/^$/{print $0}'

5 个答案:

答案 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 $_;
    }
}

和解释。在这种情况下,请勿打印空行。