Bash 如何在awk命令中添加正则表达式条件
假设我有多个列,其中可能包含要选择的表达式(如果它们匹配或不匹配)。我该怎么写那个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 -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'