我定义了一系列我不想打印的字符。
在此示例中,字符 % 被正确排除:
awk 'BEGIN { FS=";";ch1 = "%";ch2 = "-"}
{
if(NR > 1)
{
if($1 !~ ch1)
{
print $1
}
}
}
END {}' $1
但是当我添加第二个变量 ch2 时,它不会应用任何过滤器:
参见下面的示例:
awk 'BEGIN { FS=";";ch1 = "%";ch2 = "-"}
{
if(NR > 1)
{
if($1 !~ ch1|| $1 !~ ch2 )
{
print $1
}
}
}
END {}' $1
如果第一列中包含 ch1 或 ch2,我希望排除该记录。
我怎样才能做到这一点? 谢谢
最佳答案
您应该使用 &&
而不是 ||
,因为您希望 $1
不包含这两个字符:
if($1 !~ ch1 && $1 !~ ch2 )
或者,您可以使用括号表达式:
if ($1 !~ /[%-]/)
关于regex - 如何使用 vars 在 awk 中排除多个非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52702392/