awk gsubコマンドの出力をファイルにリダイレクトする

awk gsubコマンドの出力をファイルにリダイレクトする

カンマ区切りのCSVファイルから引用符の間のカンマを削除する方法に対する回答をstackexchangeで見つけました(必要な担当者がいないためコメントできません)。

awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile

出力をコンソールに印刷する代わりにファイルにリダイレクトするにはどうすればよいですか?

">"を使用してさまざまな組み合わせを試しましたが、空のファイルまたはエラーのみが表示されます。 「>>」と入力すると、毎回エラーが発生します。

ベストアンサー1

標準リダイレクトを使用すると、標準出力で動作します。

$ awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile > test.out
$

それでもエラーが画面に印刷されます。

ただし、エラーと標準出力をファイルに移動するには、次のようにします。

$ awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile 2>&1 > test.out
$

あるいは、stdoutからエラーを分離することもできます。

awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(",", "", $i) } 1' infile 2> errors.out 1 > test.out

おすすめ記事