テキストファイルがテキストファイルに再フォーマットされました。

テキストファイルがテキストファイルに再フォーマットされました。

awkシェルスクリプトを使用して下のログファイルを下部の出力ファイルに変換するにはどうすればよいですか?

入力ファイルの形式は次のとおりです。

zzz ***Fri 27 March 2017 01:21:00 EST
Device: C1  C2  C3
R1  1   2   3   
R2  4   5   6
R3  7   8   9

zzz ***Fri 27 March 2017 01:22:00 EST
Device: C1  C2  C3
R1  11  12  13  
R2  14  15  16
R3  17  18  19

出力ファイル形式:

Timestamp         R1-C1  R1-C2 R1-C3 R2-C1 R2-C2 R2-C3 R3-C1 R3-C2 R3-C3
03/08/17 01:21:00  1      2      3     4     5     6     7     8     9 
03/08/17 01:22:00 11     12     13    14    15    16    17    18    19

ベストアンサー1

これにより開始されます。

BEGIN {
    split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec", mon);
    for (i = 1; i <= 12; i++) {
        month[mon[i]] = i;
    }
}
/zzz/ {
    ts = sprintf("%d-%02d-%d %s", $5, month[substr($4, 1, 3)], $3, $6); next;
}
/Device/ {
    printf("%s", ts); next;
}
length($0) == 0 {
    print; next;
}
{
    for (i = 2; i <= NF; i++) {
        printf("%5d", $i);
    }
}

END { print ""; }

タイトルを追加してタイムスタンプを愚かな形式に変換することは、読者の練習問題として残ります。

おすすめ記事