实际上,我正在尝试搜索包含“文件名”的文本文件,并希望进行匹配,就像 shell 文件通配符生效一样。
Shell 文件通配符比正则表达式简单得多,所以我需要某种
grep "data??.*" < list_of_filenames
如果我可以用 AWK 做到这一点,我会得到加分,例如
awk -F/ '$NF ~ /data??.*/ {print $0}' < list_of_filenames
当由 / 分隔的行的最后一部分与模式“data??.*”匹配时打印该行
答案1
任何 globs 能做的事情都可以用正则表达式来表达。所以尽管你的问题的答案是否定的,像 globs 这样的工具grep
只能处理字符串和正则表达式,但这不应该是个问题。正则表达式是一种比 globs 更强大的工具。
对于您问题中的例子,您想要以 开头的内容data
,然后是任意两个字符,然后是 a,.
然后是 0 个或多个字符,直到行尾(如果用作 glob,这就是您的表达式将匹配的内容),等效的正则表达式是:
^data..\..*
因此,您可以在grep
或中使用它(顺便说一下,awk
您不需要,当 awk 中某些内容计算为真时,默认操作是打印当前行):print
awk -F/ '$NF ~ /^data..\..*/' list_of_filenames