이전에 복제본의 첫 번째 인스턴스를 유지하는 것에 대해 질문했는데 제공된 솔루션이 지금까지 잘 작동하고 있습니다(참조첫 번째 중복 인스턴스 유지).
그러나 이제 C열과 D열의 값이 동일하지만 순서가 다를 수 있는 상황이 발생하여 하나만 유지하고 싶습니다(어느 순서든 괜찮습니다).
입력 예:
A B C D E F G
1 2 T TACA 3 2 Q
9 3 A C 9 3 P
8 3 I R 8 2 Q
9 3 C A 9 3 P
4 8 C T 7 4 P
9 3 T G 9 3 P
원하는 출력:
A B C D E F G
1 2 T TACA 3 2 Q
9 3 A C 9 3 P
8 3 I R 8 2 Q
4 8 C T 7 4 P
9 3 T G 9 3 P
사용: ( sort -k3,4 -k5,5r -k1,1r file | sort -k1,1 -k3,4 -u | sort -k1,1r
또는 유사한) 유지 9 3 A C 9 3 P
및 9 3 C A 9 3 P
버전이지만 그 중 하나만 유지하고 싶습니다. 추가되는 복잡성은 A열의 값이 C열과 D열에 대해 허용되는 여러 값(예: 위의 원하는 출력 예에서 2행 9 3 A C 9 3 P
과 5 행 9 3 T G 9 3 P
)을 가질 수 있으므로 열만을 기준으로 중복 항목을 검색하는 것이 불가능하다는 점입니다. ㅏ .
감사해요!
답변1
awk '{
key1 = $1 FS $2 FS $5 FS $5 FS $7
if ( ((key1 SUBSEP $3 FS $4) in seen) || ((key1 SUBSEP $4 FS $3) in seen) )
next
seen[key1, $3 FS $4] = 1
print
}'
A B C D E F G
1 2 T TACA 3 2 Q
9 3 A C 9 3 P
8 3 I R 8 2 Q
4 8 C T 7 4 P
9 3 T G 9 3 P