내 입력은 다음과 같습니다.
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
...그렇게 하면 요청한 내용과 충돌하는 것 같으니 해당 내용이 예제 출력에 포함되어 있는지 궁금합니다.