2014-04-06 2 views
0

OK 그래서 gawk가 여기있는 최고의 도구라는 것을 확신하지 못합니다. 따라서 누구나 perl, sed, uniq를 사용하여이 작업을 수행하는 쉬운 방법을 사용하면 기꺼이 사용하게 될 것입니다 그것. 제 5 요소는 1 또는 0 수 있습니다필드의 값이 이전 줄과 일치하지 않는 경우에만 인쇄하십시오.

"1" "ARI201304010" "SLN" 1 0 0 1 
"2" "ARI201304010" "SLN" 1 0 1 1 
"3" "ARI201304010" "SLN" 1 0 1 3 
"4" "ARI201304010" "SLN" 1 0 1 0 
"5" "ARI201304010" "SLN" 1 0 2 1 
"6" "ARI201304010" "SLN" 1 1 0 1 
"7" "ARI201304010" "SLN" 1 1 0 0 
"8" "ARI201304010" "SLN" 1 1 1 0 
"9" "ARI201304010" "SLN" 1 1 2 2 
"10" "ARI201304010" "SLN" 2 0 0 0 

: I는 다음과 같습니다 데이터 세트를 필터링하는 것을 시도하고있다. 인쇄하고 싶은 것은 5 번째 필드의 값이 마지막으로 나오는 시간입니다. 다섯 번째 필드가 이전에 행의 값을 변경하지 않는 경우에만 인쇄하십시오. 이 라인 '5 번째 필드가 이전 행의 값과 일치하지 않는 경우'를 출력하지만, '인쇄마다 마지막 발생하지 않는 것을

awk '$5 != last; {last = $5}' last=-1 input 

참고 :

답변

1

나는 AWK 정확하게 적합한 도구라고 생각합니다 가치의 '. 그러나 나는 당신의 질문에서 마지막 두 번째 문장을 완전히 이해하지 못하기 때문에 질문의 마지막 문장과 모순되는 것처럼 그것을 무시하고 있습니다. 당신이 원하는 것은 다음 줄의 5 번째 필드가 다른 경우에만 라인을 인쇄하는 경우

, 시도 :

awk '$5 !=b && NR>1{print a} {a=$0; b=$5}' input