「for 文」を使用して、複数回繰り返される bash 文を簡素化します。

「for 文」を使用して、複数回繰り返される bash 文を簡素化します。

を介してファイル名をサブセット化し、grep結果ファイルをcatfor ((i=1;i<23;i+=1));

私のファイルが与えられたら、次のようにfile1.txtgrepしたいと思います。sample1

grep -w '^sample1' file1.txt > sample1_file.txt
grep -w '^sample2' file2.txt > sample2_file.txt
grep -w '^sample3' file3.txt > sample3_file.txt
....
grep -w '^sample22' file22.txt > sample22_file.txt

次に、次を接続します。

cat  sample1_file.txt  sample2_file.txt  sample3_file.txt ...  sample22_file.txt > final_output.txt

ベストアンサー1

努力する:

for i in {1..22}
do
    grep -w "^sample$i" "file$i.txt"
done >final_output.txt

メモ:

  1. {1..22}1から22までのすべての整数を実行します。 Cに慣れていない人にとっては、おそらくCよりも直感的ですが、柔軟性は低下します。((i=1;i<23;i+=1))

  2. ^sample$iシェルが拡張されるように、式を一重引用符ではなく二重引用符の中に入れることが重要です$i

  3. 必要なものであれば、final_output.txt中間ファイルを作成する必要はありません。

  4. final_output.txtステートメントの後にリダイレクトを配置するのが効率的であることに注意してください done。このようにして、シェルはこのファイルを一度だけ開いて閉じることができます。

おすすめ記事