bash 명령이 있습니다(macOS High Sierra의 경우).
sudo cat /private/var/log/system.log*| awk 'BEGIN {print "\n"} {print "Month\tDay\tTime\t\tSystemMessage"} /SHUTDOWN_TIME/{print $1,$2,$3,$8}'|sort -M|uniq|column -t
산출:
Month Day Time SystemMessage
Mar 30 02:50:56 SHUTDOWN_TIME:
Mar 30 13:13:28 SHUTDOWN_TIME:
Apr 1 17:27:48 SHUTDOWN_TIME:
Apr 1 23:59:37 SHUTDOWN_TIME:
Apr 10 17:08:10 SHUTDOWN_TIME:
Apr 10 22:59:13 SHUTDOWN_TIME:
Apr 11 19:13:43 SHUTDOWN_TIME:
Apr 2 16:33:50 SHUTDOWN_TIME:
Apr 3 00:13:58 SHUTDOWN_TIME:
Apr 3 16:54:22 SHUTDOWN_TIME:
Apr 3 23:36:55 SHUTDOWN_TIME:
Apr 4 17:00:40 SHUTDOWN_TIME:
Apr 5 17:00:50 SHUTDOWN_TIME:
Apr 8 17:41:18 SHUTDOWN_TIME:
Apr 8 23:41:05 SHUTDOWN_TIME:
Apr 9 17:19:33 SHUTDOWN_TIME:
Apr 9 23:23:18 SHUTDOWN_TIME:
다른 bash 명령이 다음으로 설정되어 있지만:
sudo cat /private/var/log/system.log*| awk 'BEGIN {print "\n"} {print "Month\tDay\tTime\t\tSystemMessage"} /BOOT_TIME/{print $1,$2,$3,$6}'|sort -M|uniq|column -t
산출:
Month Day Time SystemMessage
Mar 30 12:37:12 BOOT_TIME
Apr 1 10:09:12 BOOT_TIME
Apr 1 21:45:41 BOOT_TIME
Apr 10 09:38:12 BOOT_TIME
Apr 10 19:53:06 BOOT_TIME
Apr 11 12:02:02 BOOT_TIME
Apr 12 09:33:21 BOOT_TIME
Apr 2 10:19:19 BOOT_TIME
Apr 2 22:54:34 BOOT_TIME
Apr 3 09:56:02 BOOT_TIME
Apr 3 21:09:25 BOOT_TIME
Apr 4 10:00:42 BOOT_TIME
Apr 5 10:09:17 BOOT_TIME
Apr 8 09:47:02 BOOT_TIME
Apr 8 21:21:34 BOOT_TIME
Apr 9 09:34:50 BOOT_TIME
Apr 9 21:16:49 BOOT_TIME
이 두 명령을 결합하여 다음과 같은 출력을 생성하는 가장 좋은 방법은 무엇입니까?
Month Day Time SystemMessage
Mar 30 12:37:12 BOOT_TIME
Mar 30 02:50:56 SHUTDOWN_TIME
첫 번째 명령의 출력에는 각 줄 끝에 ":"가 있습니다. 출력에서 이를 제거하려면 어떻게 해야 합니까?
답변1
이를 결합하려면 다음과 같은 작업을 수행할 수 있습니다(macOS High Sierra 시스템의 로그에 액세스할 수 없고 Mojave 시스템의 로그 메시지가 전혀 일치하지 않기 때문에 테스트되지 않았습니다).
cat /private/var/log/system.log | awk '
BEGIN { OFS="\t"; print "Month", "Day", "Time", "Message" }
/SHUTDOWN_TIME/ { sub(":$","",$8); print $1, $2, $3, $8 }
/BOOT_TIME/ { print $1, $2, $3, $6 }'
8번째 필드의 sub()
후행 필드 :
(있는 경우)를 제거합니다.
저는 헤더를 한 번만 인쇄하지만 여러분은 한 줄에 한 번씩만 인쇄합니다. 로그 파일이 이미 시간별로 정렬되어 있을 수 있으므로 정렬도 불필요합니다.
내 macOS Mojave 시스템에서는 다른 system.log*
파일이 압축되어 있으므로 cat
해당 내용 을 awk
. zcat
시스템의 관리자로서 sudo
로그를 읽을 필요도 없습니다.
답변2
출력을 2개의 파일에 저장하고 다음 명령을 사용하여 위의 결과를 얻습니다.
cat file1 file2|sed '/Month/d'| sed "s/:$//g"| sed '1i Month Day Time SystemMessage'
Month Day Time SystemMessage
Mar 30 02:50:56 SHUTDOWN_TIME
Mar 30 13:13:28 SHUTDOWN_TIME
Apr 1 17:27:48 SHUTDOWN_TIME
Apr 1 23:59:37 SHUTDOWN_TIME
Apr 10 17:08:10 SHUTDOWN_TIME
Apr 10 22:59:13 SHUTDOWN_TIME
Apr 11 19:13:43 SHUTDOWN_TIME
Apr 2 16:33:50 SHUTDOWN_TIME
Apr 3 00:13:58 SHUTDOWN_TIME
Apr 3 16:54:22 SHUTDOWN_TIME
Apr 3 23:36:55 SHUTDOWN_TIME
Apr 4 17:00:40 SHUTDOWN_TIME
Apr 5 17:00:50 SHUTDOWN_TIME
Apr 8 17:41:18 SHUTDOWN_TIME
Apr 8 23:41:05 SHUTDOWN_TIME
Apr 9 17:19:33 SHUTDOWN_TIME
Apr 9 23:23:18 SHUTDOWN_TIME
Mar 30 12:37:12 BOOT_TIME
Apr 1 10:09:12 BOOT_TIME
Apr 1 21:45:41 BOOT_TIME
Apr 10 09:38:12 BOOT_TIME
Apr 10 19:53:06 BOOT_TIME
Apr 11 12:02:02 BOOT_TIME
Apr 12 09:33:21 BOOT_TIME
Apr 2 10:19:19 BOOT_TIME
Apr 2 22:54:34 BOOT_TIME
Apr 3 09:56:02 BOOT_TIME
Apr 3 21:09:25 BOOT_TIME
Apr 4 10:00:42 BOOT_TIME
Apr 5 10:09:17 BOOT_TIME
Apr 8 09:47:02 BOOT_TIME
Apr 8 21:21:34 BOOT_TIME
Apr 9 09:34:50 BOOT_TIME
Apr 9 21:16:49 BOOT_TIME