2014-11-12 3 views
0

마지막 로그 인 []이 (가) 인 다음 로그에서 데이터를 추출하고 싶습니다.로그에서 값 추출

[11/10/14 9:20:57:133 GMT] 000002d2 EmailAdapterE I Processing Email :: [****][****@hotmail.com][0][1][63][4][4670][0][2014-11-24][12] 
[11/10/14 9:20:57:110 GMT] 000002d2 EmailAdapterE I Processing Email :: [****][****@aol.com][0][1][63][1][3286][0][2014-11-24][10] 
[11/10/14 9:20:57:088 GMT] 000002d2 EmailAdapterE I Processing Email :: [****][*****@pietrawoodandstone.com][1][1][63][1][3455][2000][2014-11-24][26] 

여기에서 마지막 줄 사이의 값을 원합니다.

$ awk -F[][] '{print $(NF-1)}' file 
12 
10 
26 

:

위의 줄에서 예를 들어 ... 난

12 
10 
26 

awk, cutsed을 시도 다음과 같은 출력하지만 성공을

답변

0

awk이 당신의 친구입니다 싶어 필드 분리 기호를 [ 또는 ] 중 하나로 설정합니다. . 이를 바탕으로 마지막에서 두 번째 필드에는 원하는 것을 포함하므로 $(NF-1)으로 인쇄합니다.

sed 또한 일부 정규식으로 그것을 만들 수 있습니다 :

$ sed -r 's/.*\[([0-9]*)\]$/\1/' file 
12 
10 
26 

[]에 포함 된 숫자의 마지막 블록을 잡아 다시 \1과 그것을 인쇄합니다. grep

당신은 또한 뒤에 봐 -를 사용하고 [] 라인 + 끝 사이에 일치하는 미리 볼 수 있습니다 :

$ grep -Po '(?<=\[)[0-9]*(?=]$)' file 
12 
10 
26 
+1

일부 골프'된 awk -F의 [ '{$ 0 = $ NF + 0} 1'' – Jotne

+0

사실! 또한'awk -F [ '{print $ NF + 0}'' – fedorqui