For ループを使用して Grep を使用したファイルの並べ替えと保存

For ループを使用して Grep を使用したファイルの並べ替えと保存

次のように番号付けされた多数のファイルがあります。file_01_01.out最初の数字はファイルが属するグループ、2番目の数字はそのグループ内のファイルの番号です。file_10_07.outグループ10のファイル7にも同様に適用される。

このファイルのいくつかのテキストをコピーしていくつかの出力ファイルにグループ化したいと思います。これを試してみましたが、実際には機能しませんでした。理由はわかりません。

for i in {0..21};
  do
    grep "text" file_$i_*out > out_$i.txt;
done;

なぜこれがうまくいかないのかわかりませんが、出力には確かにロジックがあります。これは私が望む出力ではありません。一部のファイルは完全にスキップされました。

答え1

(@Philipposを除く):Bashは$i_代わりに変数を拡張しようとしています$i...${i}_...

for i in {00..21}
  do     
    grep "text" file_${i}_*out > out_$i.txt
  done

答え2

あなたのスキーマは拡張されますが、file_1_次のものが必要です。file_01_

使用for i in {00..21};

関連情報