regex - 如何使用 vars 在 awk 中排除多个非字母数字字符
问题描述
我已经定义了一系列我不想打印的字符。
在此示例中,字符 % 被正确排除:
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 !~ /[%-]/)
推荐阅读
- c# - 在C#中对每个数字求平方
- php - Google Analytics API 刷新令牌 API 致命错误
- rust - 检查 .rlib 文件的工具
- python - 在 NUKE 中设置常量节点的宽度和高度
- java - UiSelector().ResoureIdMatches 的 Appium Or(|) 条件给出 NoSuchElementException
- angular - 在 HttpErrorResponse 中显示从服务器抛出的 CustomError 消息和状态码
- python-3.x - 基于 if 语句写入或读取文件
- indexeddb - How to define and use database relationships in dexie js?
- html - 调整窗口大小时如何阻止导航栏中的文本上下移动
- javascript - 同步两个 HTTP 请求