考虑我有一个带有某种模式的命令,例如:
$ grep "some string" file-[0-99]
Run Code Online (Sandbox Code Playgroud)
我如何将结果写入一个文件,该文件的名称将基于模式的当前值,以便
$ grep "some string" file-0 > processed-0
$ grep "some string" file-1 > processed-1
...
Run Code Online (Sandbox Code Playgroud)
喜欢的东西$ grep "some string" file-[0-100] > processed-[0-100],虽然这一个不工作。
[0-99]与[0-9],[0-100]意思相同[01]。[...]定义一个字符类,你不能在那里使用更长的字符串。
要解决您的原始问题,您可以使用循环:
for i in {0..99} ; do
grep "some string" file-"$i" > processed-"$i"
done
Run Code Online (Sandbox Code Playgroud)
或者,如果不是所有可能的输入文件都存在,您可以从文件名中提取后缀:
for file in file-* ; do
suffix=${file##*-}
grep "some string" "$file" > processed-"$suffix"
done
Run Code Online (Sandbox Code Playgroud)