从特定字段不以某些内容开头的文件中打印行

时间:2010-09-13 13:42:14

标签: linux unix scripting sed awk

我想要打印第3个字段(字段分隔符号:)的所有行,不要以#开头(表示第3个字段是注释)。请注意,在和#之间可能存在空格。

示例输入:

A:B:#hdfghdfg

答:B:#dfdfdfg

A:B:C

期望的输出:

A:B:C

我试过了:

awk -F:'$ 3~ / ^#/ {print}'run_out5> run_out6

但它不起作用

谢谢,

Jagrati

2 个答案:

答案 0 :(得分:4)

正则表达式可能更清晰一点:

awk -F: '$3 !~ /^ ?#/ { print }'

通常更好的方法是期望重复的空格(空格或制表符)而不是单个空格字符,它们在打印输出中看起来相同。

awk -F: '$3 !~ /^[[:space:]]*#/ { print }'

答案 1 :(得分:0)

使用!~选择与正则表达式不匹配的行 调整正则表达式,使其与前导空格匹配。

awk -F : '$3 !~ /^ *#/ {print}'