基于模式的命令输出

xax*_*axa 2 bash

考虑我有一个带有某种模式的命令,例如:

$ 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],虽然这一个不工作。

cho*_*oba 7

[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)