텍스트 파일에서 첫 번째 열은 복제되지만 두 번째 열은 다른 행만 어떻게 인쇄합니까? 나는이 차이를 화해시키고 싶다. 어쩌면 awk/sed/bash를 사용하고 있을까요?첫 번째 열과 두 번째 열이 일치하는 행 인쇄
입력 :
Jon AAA
Jon BBB
Ellen CCC
Ellen CCC
출력 : 실제 파일이 정렬되지 않습니다 것을
Jon AAA
Jon BBB
주.
도움 주셔서 감사합니다.
텍스트 파일에서 첫 번째 열은 복제되지만 두 번째 열은 다른 행만 어떻게 인쇄합니까? 나는이 차이를 화해시키고 싶다. 어쩌면 awk/sed/bash를 사용하고 있을까요?첫 번째 열과 두 번째 열이 일치하는 행 인쇄
입력 :
Jon AAA
Jon BBB
Ellen CCC
Ellen CCC
출력 : 실제 파일이 정렬되지 않습니다 것을
Jon AAA
Jon BBB
주.
도움 주셔서 감사합니다.
이 라인은해야한다 : 그것은 처음
awk '!($1 in a) {a[$1]=$2;next}
$1 in a && $2!=a[$1]{p[$1 FS $2];p[$1 FS a[$1]]}
END{for(x in p)print x}' file
p
에 넣으므로 같은 $ 1, $ 2 조합은 여러 번 인쇄되지 않습니다.이렇게하면 출력의 순서가 재정렬됩니다. 그게 문제인지 아닌지 확실하지 않습니다. –
아니요, 이것은 @TomFenech 발생 순서를 유지하지 않습니다. 우리는 그것을 만들 수 있지만 더 많은 검사가 필요하다. 또한 주문 정보를 저장하기 위해 또 다른 배열이 필요하다. – Kent
@Kent 좋은 해결책이지만, OP가 원하는 것이 명확하지 않습니다. 예를 들어, 끝에'Jon AAA'라고 말한 행을 삽입하면 행이 중복 되어도 여전히 그 행을 인쇄합니다. –
sort file | uniq -u
배열 p
의 인덱스를 인쇄 할 수 있습니다.
'sort'를 제거하고 정렬 할 필요가 없다면'uniq -u file'을 사용하면됩니다. –
이것이 OP가 필요한지 의심 스럽습니다. 그의 예에서 다른 줄이 있다면 : 'FOO BAR', 당신의 유니크가 그것을 출력으로 가져올 것입니다. 하지만 내 이해에서, 그는 그 라인을 원하지 않을 수도 있습니다. – Kent
@ DavidC.Rankin, 이전 의견에서 OP는 라인이 "혼합되어 무작위", 즉 정렬 일 것이라고 말했다. –
그냥 보통의 독특한 종류이 당신을 위해 작동 할 수
awk '!a[$0]++' test
작동합니다 :
sort file | uniq -u | rev | uniq -Df1 | rev
이것은, 중복 라인을 제거하고, 파일을 정렬 선을 반전 제거하고 독특한 라인이 동일한 키 (두 번째 필드가 동일한 위치에서 복제본을 유지하지 않음)를 가지지 않고 라인을 원래 위치로 되돌립니다.
이렇게하면 싱글 톤 키로 중복 된 선과 선이 삭제됩니다.
예제가 항상 예제와 같이 그룹화되어 있습니까? –
아니요, 혼합 및 임의 숫자 – user1899415
열 1에 동일한 값을 가진 두 줄 이상이 있습니까? 그렇다면 어떻게되어야합니까? –