我们为多个文件名搜索模式编写了shell脚本。
文件格式:
(a-b)
以单个号码开头,以 8位号码结尾
命令:
<number>_<20180809>.txt
如果sting匹配则返回值。
答案 0 :(得分:1)
您可以通过以下方式更改命令,它将起作用:
awk -v string='12_1234' -v search='^[0-9]+_+[0-9][0-9][0-9][0-9]$' 'BEGIN{ if (string ~ search) print string }'
12_1234
如果您使用/.../
运算符,并且还有一个额外的~
,则无需使用$
语法进行正则表达式。你真的很亲密!
然后,您必须将搜索正则表达式调整为^[0-9]_[0-9]{8}$ to match exactly your
_&lt; 20180809&gt;`模式。
此外,如果您只是从文件中提取此信息,则可以使用grep
,
$ awk -v string='1_12345678' -v search='^[0-9]_[0-9]{8}$' 'BEGIN{ if (string ~ search) print string }'
1_12345678
$ (search='^[0-9]_[0-9]{8}$'; echo '1_12345678')| grep -oE "$search"
1_12345678