如何在awk命令中添加正则表达式条件

时间:2016-07-01 13:49:23

标签: bash awk

假设我有多个列可能包含我想要选择的表达式,如果它们匹配或不匹配。我如何编写awk表达式?

以下示例仅在某些字段匹配时才打印列:

awk -v OFS=$'\t' -F $'t\' '($12 ~ /9\..[^b-z]/) || ($4 !~ /QA_[tT][eE][sS][tT]/) || ($4 !~ /ACC_Operator1/) || ($5 !~ /4CPP/) { print $8, $5, $4, $10, $6, $12}' filename

运行这个给我一个

-bash: !~: event not found

我假设使用的是bash问题!

1 个答案:

答案 0 :(得分:4)

你有一个拼写错误,由语法荧光笔显示:

awk -v OFS=$'\t' -F $'t\' ...
                       ^ escaped single quote

这意味着awk命令的开头引号实际上是关闭了之前的单引号。

请注意,awk会理解\t,因此您可以使用-v OFS='\t',而不是使用$'\t'