문제를 해결할 수있는 한 줄이 AWK : (. 적어도 당신의 예를 들어 실제 파일은 내가 볼 수 없습니다)
awk -F\[ '{a[$2]=$0;}END{for(x in a)print a[x]}' file
데이터와
시험 :
kent$ echo "2013-04-07 08:44:01 [INFO] User logged in
2013-04-07 08:54:55 [INFO] User logged in
2013-04-07 08:57:12 [INFO] User logged in
2013-04-07 08:59:45 [INFO] User logged in
2013-04-07 09:01:28 [INFO] User logged in
2013-04-07 09:11:00 [INFO] User logged in
2013-04-07 09:12:56 [INFO] User logged in
2013-04-07 09:15:43 [INFO] User lost connection"|awk -F\[ '{a[$2]=$0;}END{for(x in a)print a[x]}'
2013-04-07 09:12:56 [INFO] User logged in
2013-04-07 09:15:43 [INFO] User lost connection
동일한 로그인의 경우 마지막 하나만 인쇄됩니다.
이
kent$ cat file
2013-04-07 09:11:00 [INFO] User logged in
2013-04-07 09:12:56 [INFO] User logged in
2013-04-07 09:15:43 [INFO] User lost connection
2013-04-08 09:11:00 [INFO] User logged in
2013-04-08 09:12:56 [INFO] User logged in
2013-04-08 09:15:43 [INFO] User lost connection
다음이 라인이 작동 : 당신이 같은 여러 개의 로그인 잃어버린 연결 블록을 가질 수
: 편집
나는 당신의 실제 파일이 경우에있을 수 있습니다 생각 너 :
awk '/lost/{print a;print;next;}{a=$0}' file
출력은 다음과 같습니다
sed '/User logged in/{h;d};H;x' file
을 또는 당신이 시스템에있는 경우로 ;
를 지원하지 않는 : 행에 여러 User lost connection
라인이 없을 것이라고 가정
2013-04-07 09:12:56 [INFO] User logged in
2013-04-07 09:15:43 [INFO] User lost connection
2013-04-08 09:12:56 [INFO] User logged in
2013-04-08 09:15:43 [INFO] User lost connection
이 행에 여러 '사용자 손실 connection' 라인이있을 수 있습니까? –