在bash输出的一列中搜索多个字符串

时间:2018-12-20 21:19:39

标签: regex awk syntax grep

我想使用awk在第四列中搜索多个字符串。

ls -ltr | awk '$4 == /string1|string2/'

表达式应返回在ls -ltr输出中返回的第4列中包含string1 | 2的行。

1 个答案:

答案 0 :(得分:0)

如果您要查找完全匹配的内容,则需要在两侧都使用锚点

$ ... | awk '$4 ~ /^(string1|string2)$/'

或字面上

$ ... | awk '$4=="string1" || $4=="string2"'

否则,您还将获得部分匹配。

但是,通常不建议解析ls的输出,而使用find则很可能获得相同的结果。

对于部分匹配(string1或string2作为$ 4的子字符串出现),请返回第一种方法,使其不区分大小写,将string1和string2保持小写,然后

... | awk 'tolower($4) ~ /string1|string2/'