bash - awk 无法忽略 "++"

标签 bash awk

check="a1++"
awk -F":" -v name="$check" 'tolower($2)~ tolower(name)' file.txt

awk 在处理“++”字符串时似乎存在一些问题。它无法检索文件中的值。但是,我尝试更改 check="44b" 它似乎工作得很好

apple:44b:Vietnam
orange:A1++ approved:China
jelly:-34:Malaysia
pear:98:Malaysia

文件.txt

最佳答案

正如 Glenn Jackman 在评论中提到的,您应该使用 index 而不是 ~,因为 + 是正则表达式元字符。

如果您使用++,那么orange:A123roved:China也会匹配...

你可以这样做:

$ awk -F: -v name="$check" 'index(tolower($2), tolower(name))' file

关于bash - awk 无法忽略 "++",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41986532/

相关文章:

bash - SED 转义特殊字符

bash - 如何将备用行合并到每个后续列?

regex - grep -v pattern 并删除之前的 1 行和之后的 4 行

regex - 如何在一行的匹配部分中执行 sed 转换

perl - 如果第二个字段长于 7 个字符,则 awk 或 perl 单行打印行

linux - 如何使用awk进行过滤(perl自动化)

python - 如何存储 bash 命令的输出?

linux - 将每 X 行输入放入一个新列

按顺序对文件进行 Bash 和排序

bash - 解析系统日志以计算特定值