如何使用awk忽略空行和注释行

时间:2012-06-29 18:23:17

标签: regex linux bash awk

我正在写这段代码:

awk -F'=' '!/^$/{arr[$1]=$2}END{for (x in arr) {print x"="arr[x]}}' 1.txt 2.txt

此代码忽略空行,但我也想忽略以#(注释)开头的行。

知道如何添加多种模式吗?

3 个答案:

答案 0 :(得分:11)

!/^$/更改为

!/^($|#)/

!/^($|[:space:]*#)/

如果你想在#之前忽略空格。

答案 1 :(得分:8)

awk 'NF && $1!~/^#/' data.txt

将打印所有非空行(字段数NF不是 零)和不包含#的行作为第一个字段。

它将正确处理一行空格,因为NF将为零,而$1以来的前导空格将忽略它们。

答案 2 :(得分:0)

awk 'NF && !/^[:space:]*#/' data.txt

因为' [:space:] *'捕获 none 或更多空格。