使用 For 循环使用 Grep 对文件进行排序和保存

Max*_*Max 3 grep bash for

我有大量文件的编号方式,例如file_01_01.out第一个数字是文件所属的组,第二个是组中文件的编号 -file_10_07.out第 10 个组中的第 7 个文件也是如此。

我想从这些文件中复制一些文本并将它们分组到一些输出文件中。我试过使用它,但它并没有真正起作用,我不明白为什么:

for i in {0..21};
  do
    grep "text" file_$i_*out > out_$i.txt;
done;
Run Code Online (Sandbox Code Playgroud)

不知道为什么这不起作用,但输出肯定有逻辑。这不是我想要的输出,有些文件只是被完全跳过了。

JJo*_*oao 6

(除了@Philippos):Bash 正在尝试扩展变量$i_而不是$i. 尝试...${i}_...

for i in {00..21}
  do     
    grep "text" file_${i}_*out > out_$i.txt
  done
Run Code Online (Sandbox Code Playgroud)


Phi*_*pos 5

您的模式将扩展为file_1_,但您需要file_01_

for i in {00..21};

  • 另请参阅@JJoao 的回答:另一个问题是下划线是有效的变量名字符,因此您需要使用`${i}`。我不应该在我看到的第一个问题上停下来!(-: (3认同)