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 ""; }
제목을 추가하고 타임스탬프를 어리석은 형식으로 변환하는 것은 독자의 연습 문제로 남겨집니다.