AWK删除空行

时间:2012-04-27 08:52:05

标签: linux awk

/./仅删除第一个条件{ print "a"$0 }的空行,我如何确保脚本删除每个条件的空行?

awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile

4 个答案:

答案 0 :(得分:31)

awk命令从文件中删除空白行:

awk 'NF > 0' filename

答案 1 :(得分:22)

已经提出的答案的缩写形式如下:

awk NF file

任何awk脚本都遵循语法condition {statement}。如果语句块不存在,awk将打印整个记录(行),以防condition不为零。

NF中的

awk变量包含该行中的字段数。因此,当该行非空时,NF保持一个正值,触发默认的awk操作(打印整行)。如果是空行,NF为零并且不满足条件,因此awk不执行任何操作。

请注意,您甚至不需要引用,因为这两个字母的awk脚本不包含任何可由shell解释的空格或字符。

awk '!/^$/' file

^$是空行的正则表达式。需要2 /才能让awk理解字符串是正则表达式。 !是标准否定。

答案 2 :(得分:9)

如果要忽略所有空行,请将其放在脚本的开头

/^$/ {next}

答案 3 :(得分:2)

将以下条件放在第一个条件中,并使用if语句检查它们,如下所示:

awk -F, '
    /./ { 
        print "a"$0; 
        if (NR!=1) { print "b"$0 } 
        print "c"$0 
    } 
    END { print "d"$0 }
' MyFile