텍스트 파일이 텍스트 파일로 다시 포맷되었습니다.

텍스트 파일이 텍스트 파일로 다시 포맷되었습니다.

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 ""; }

제목을 추가하고 타임스탬프를 어리석은 형식으로 변환하는 것은 독자의 연습 문제로 남겨집니다.

관련 정보