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

Bash 如何在awk命令中添加正则表达式条件,bash,awk,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 运

假设我有多个列,其中可能包含要选择的表达式(如果它们匹配或不匹配)。我该怎么写那个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使用的问题

您有一个拼写错误,语法高亮显示:

awk -v OFS=$'\t' -F $'t\' ...
                       ^ escaped single quote
这意味着您的awk命令的开始引号实际上是结束上一个单引号


请注意,awk理解
\t
,因此您可以使用
-v OFS='\t'
,而不是使用
$'\t'
您有一个拼写错误,语法高亮显示:

awk -v OFS=$'\t' -F $'t\' ...
                       ^ escaped single quote
这意味着您的awk命令的开始引号实际上是结束上一个单引号

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