同じawk操作を別のファイルに適用するには?

同じawk操作を別のファイルに適用するには?

私は最初にawkに触れましたが、これを行うためにawkスクリプトを書くことができるかどうかわかりません。

ソートする必要があるデータファイルは何百ものあります。それぞれに次の行を使用します。

awk 'ORS=NR%3?" ":"\n" ' file1.tex >  file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex >  file2_sorted.tex
...

必要な結果を得る。しかし、私はこのタスクを自動的に実行し、各ファイルをインポートし、タスクを適用し、対応するソートされたファイルを作成するスクリプトを持ちたいと思います。

ご協力ありがとうございます!

ベストアンサー1

forループに次のファイルを適用できます。

for file in *.tex;
do
    awk 'ORS=NR%3?" ":"\n"' "$file" > "$(basename "$file")_sorted.tex"
done

または1行で:

for file in *.tex; do awk 'ORS=NR%3?" ":"\n"' $file > "$(basename "$file" .tex)_sorted.tex"; done

どのシェルも指定していないので、シェル固有の構文をbasename使用するのではなく、より標準的なシェルを使用してください${file%%.tex}

おすすめ記事