awkコマンドを使用して、ファイルの最初の列のみ日付形式を変更します。

awkコマンドを使用して、ファイルの最初の列のみ日付形式を変更します。

ログを含む大きなテキストファイルがあります。次の awk コマンドを実行すると、次の出力が表示されます。

grep TEST-FIELD test.log | awk '{print $23,$24,$4,$6,$7,$11,$12,$13}'


2020/01/12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020/01/12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020/01/12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020/01/12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx

日付列 ($23) の出力を次に変更する必要があります。

2020-01-12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020-01-12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020-01-12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx
2020-01-12 08:43:14 TEST-FIELD 10001000 RRRT100 xx.xx.xx.xx [xx-xxxx] xx.xx.xx.xx

次のコマンドを実行しましたが、正しい値がまったく印刷されませんでした。

grep TEST-FIELD test.log | awk  -F"/" '{OFS="/"; $23=strftime("%Y-%m-%d", $23); print $24,$4,$6,$7,$11,$12,$13}'

AWKのみを使用して正しい出力を取得する方法

ベストアンサー1

元のawkを次に変更します。

awk '{gsub ("/", "-", $23); print $23,$24,$4,$6,$7,$11,$12,$13}'

おすすめ記事