基于模式的命令输出

基于模式的命令输出

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

$ 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

相关内容