A열의 값이 다음 행에 반복되면 두 행 모두 삭제

A열의 값이 다음 행에 반복되면 두 행 모두 삭제

내 입력은 다음과 같습니다.

pak_c35079_g1_i1|m.14890    Pfam  
pak_c20797_g1_i1|m.3458     ProDom  
pak_c20797_g1_i1|m.3458     Pfam  
pak_c28265_g1_i3|m.9595     TIGRFAM  
pak_c28265_g1_i3|m.9595     Pfam  
.  
.  
.  

나는 다음과 같은 출력을 원합니다 :

pak_c35079_g1_i1|m.14890    Pfam
pak_c28265_g1_i3|m.9595     TIGRFAM
pak_c28265_g1_i3|m.9595     Pfam   

즉, 다음 행(A열)에서 값이 반복되면 두 행을 모두 삭제합니다.

답변1

당신은 이것을 할 수 있습니다 awk:

awk 'BEGIN {last=""; last_line=""} { if (last == $1) {} else {print last_line} last=$1; last_line = $0}' < file_to_proceed

저는 전문가가 아닙니다 awk. 마지막 줄에 문제가 있을 것입니다...

답변2

sed '$!N;/^\([^ ]* \).*\n\1/d;P;D' <in >out

그것은 처리되지 않습니다연속적으로 동일한 첫 번째 필드 - 그러나 어쨌든 그것은 당신이 요구하는 것이 아닌 것 같습니다.

귀하의 입력 예시를 보면 제 출력은 예시 출력과 약간 다릅니다.


pak_c35079_g1_i1|m.14890    Pfam  

위 명령은 sed다음 두 줄을 인쇄하지 않습니다.

pak_c28265_g1_i3|m.9595     TIGRFAM
pak_c28265_g1_i3|m.9595     Pfam   

...그렇게 하면 요청한 내용과 충돌하는 것 같으니 해당 내용이 예제 출력에 포함되어 있는지 궁금합니다.

관련 정보