awk模式匹配错误的数字

时间:2011-04-04 08:33:51

标签: bash shell awk

我的脚本执行此操作

ls -1A | awk '/model[1-9]+.dat/' | while read FN

但是当我将模型[1-9]增加到模型[1-1000]时,它与我期望的文件不匹配。

2 个答案:

答案 0 :(得分:2)

  

当将模型[1-9]增加到模型[1-1000]时采用随机数

     

喜欢model100.dat,model105.dat。 model11.dat ... etc

不,这不是随机的。

[1-1000]并不意味着“1到1000之间的任何数字”。它表示1到1,或0,或0或0之间的数字。这只是0或1.这显然不是你的意思。

如果您只想查看前1000个文件,可以创建一个模式,指出文件名必须包含一个数字[0-9],两个数字[0-9][0-9]或三个数字{{1} }。将[0-9][0-9][0-9]放在每个之间以表示“或”。所以写成|。这意味着0-999。

然后你可以将你的awk部分改为

([0-9]|[0-9][0-9]|[0-9][0-9][0-9])

答案 1 :(得分:2)

你根本不需要awk,bash大括号扩展就足够了。

for filename in model{1..1000}.dat; do ...; done