我想要打印第3个字段(字段分隔符号:)的所有行,不要以#开头(表示第3个字段是注释)。请注意,在和#之间可能存在空格。
示例输入:
A:B:#hdfghdfg
答:B:#dfdfdfg
A:B:C
期望的输出:
A:B:C
我试过了:
awk -F:'$ 3~ / ^#/ {print}'run_out5> run_out6
但它不起作用
谢谢,
Jagrati
答案 0 :(得分:4)
正则表达式可能更清晰一点:
awk -F: '$3 !~ /^ ?#/ { print }'
通常更好的方法是期望重复的空格(空格或制表符)而不是单个空格字符,它们在打印输出中看起来相同。
awk -F: '$3 !~ /^[[:space:]]*#/ { print }'
答案 1 :(得分:0)
使用!~
选择与正则表达式不匹配的行
调整正则表达式,使其与前导空格匹配。
awk -F : '$3 !~ /^ *#/ {print}'