我想使用awk在第四列中搜索多个字符串。
ls -ltr | awk '$4 == /string1|string2/'
表达式应返回在ls -ltr输出中返回的第4列中包含string1 | 2的行。
答案 0 :(得分:0)
如果您要查找完全匹配的内容,则需要在两侧都使用锚点
$ ... | awk '$4 ~ /^(string1|string2)$/'
或字面上
$ ... | awk '$4=="string1" || $4=="string2"'
否则,您还将获得部分匹配。
但是,通常不建议解析ls
的输出,而使用find
则很可能获得相同的结果。
对于部分匹配(string1或string2作为$ 4的子字符串出现),请返回第一种方法,使其不区分大小写,将string1和string2保持小写,然后
... | awk 'tolower($4) ~ /string1|string2/'