awkが誤ってカンマを削除しました。

awkが誤ってカンマを削除しました。

テキストファイルのデータを操作するために、次のデータ構造を使用しています。

"1111","2222","3333","4444","5555","6666","7777","2017/12/15 16:26:00"

日付の「/」を「-」に変更しようとしています。これは私のawkコマンドです。

awk -F "," '{gsub("/", "-", $8); print}' my-input.txt

/を正常に変更しましたが、「、」カンマを「」空白文字に置き換える意図しない結果が発生します。

"1111" "2222" "3333" "4444" "5555" "6666" "7777" "2017-12-15 16:26:00"

なぜこれが起こるのか知っている人がいますか?

ベストアンサー1

taliezinとpfnueselが指摘したように、入力ファイルの区切り文字を「、」として定義すると、出力ファイルの区切り文字も「、」として定義する必要があります。出力ファイルの区切り文字が省略され、既存のフィールドが変更された場合、awkはデフォルト値(この場合は '' [スペース]文字)を使用します。

以下は修正されたawkコマンドです。

awk -F "," -v OFS="," '{gsub("/", "-", $8); print}' my-input.txt

「、」を維持すると、期待される結果が出力されます。

"1111","2222","3333","4444","5555","6666","7777","2017-12-15 16:26:00"

おすすめ記事