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

pha*_*ani 4 regex linux bash awk

我正在写这段代码:

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

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

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

cha*_*aos 11

更改!/^$/

!/^($|#)/
Run Code Online (Sandbox Code Playgroud)

要么

!/^($|[:space:]*#)/
Run Code Online (Sandbox Code Playgroud)

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


Lev*_*von 8

awk 'NF && $1!~/^#/' data.txt
Run Code Online (Sandbox Code Playgroud)

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

它将正确处理一行空格,因为NF将为零,而前导空白$1将忽略它们.