![基于模式的命令输出](https://linux22.com/image/982223/%E5%9F%BA%E4%BA%8E%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA.png)
假设我有一个带有某种模式的命令,例如:
$ grep "some string" file-[0-99]
我如何将结果写入一个文件,该文件的名称将基于模式的当前值,以便
$ grep "some string" file-0 > processed-0
$ grep "some string" file-1 > processed-1
...
尽管$ grep "some string" file-[0-100] > processed-[0-100]
这个不起作用。
答案1
[0-99]
与 相同[0-9]
,[0-100]
表示[01]
。[...]
定义一个字符类,您不能在那里使用更长的字符串。
为了解决您的原始问题,您可以使用循环:
for i in {0..99} ; do
grep "some string" file-"$i" > processed-"$i"
done
或者,如果不是所有可能的输入文件都存在,您可以从文件名中提取后缀:
for file in file-* ; do
suffix=${file##*-}
grep "some string" "$file" > processed-"$suffix"
done