ループがあり、awkを使用していくつかの列を選択してソートし、出力ファイルの名前を新しい名前に変更したいと思います。私のawkとsortはうまくいきますが、入力ファイル名とは異なるファイル名を取得したいのですが、そうすることはできません。このループを実行する別のディレクトリ(a、b、c)があります。コマンドは次のとおりです。
for i in a b c
do
(cd $i/; for i in *_test2.txt; do awk '{print $2"_"$1}' $i | sort -V > ${i%.txt}3.txt; done)
done
ファイル名を次に変更したいのですが、*_test3.txt
ループ内の出力は次のようになります。*_test23.txt
どうすればいいですか?
ベストアンサー1
${i%.txt}
.txt
ファイル名から拡張子のみが削除されます$i
。追加の文字を選択するには、次のようにします${i%?.txt}
。
for i in {a,b,c}/*_test2.txt; do
awk '{ print $2 "_" $1 }' "$i" | sort -V -o "${i%?.txt}3.txt"
done