awk-通过变量搜索模式
我们已经为多文件名搜索模式编写了shell脚本 文件格式:awk-通过变量搜索模式,awk,Awk,我们已经为多文件名搜索模式编写了shell脚本 文件格式: <number>_<20180809>.txt 如果sting匹配,则返回值。您可以通过以下方式更改命令,命令将正常工作: 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 如果您使用~运算
<number>_<20180809>.txt
如果sting匹配,则返回值。您可以通过以下方式更改命令,命令将正常工作:
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
如果您使用~
运算符,并且您还有一个额外的$
,则不需要为regex使用/…/
语法。你真的很接近
然后,您必须将搜索正则表达式调整为^[0-9].[0-9]{8}$以完全匹配您的\`模式
此外,如果您只是从文件中提取此信息,则可以使用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
@埃德蒙顿:谢谢你,埃德,你完全正确固定的!
$ 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