좋은 날,BASH, 정렬없이 중복 인쇄
정렬없이 파일에서 반복되는 단어 만 인쇄하는 방법을 궁금합니다.
awk의 반대 위치는 awk '!x[$0]++'
입니다. 다른 방법이 있습니까?
미리 감사드립니다.
예상 입력 당신이 당신의 awk
문을 보면, 당신이 !
와 인쇄 조건을 부정 것을 볼 수 있습니다
a
w
좋은 날,BASH, 정렬없이 중복 인쇄
정렬없이 파일에서 반복되는 단어 만 인쇄하는 방법을 궁금합니다.
awk의 반대 위치는 awk '!x[$0]++'
입니다. 다른 방법이 있습니까?
미리 감사드립니다.
예상 입력 당신이 당신의 awk
문을 보면, 당신이 !
와 인쇄 조건을 부정 것을 볼 수 있습니다
a
w
a
b
a
c
d
e
f
w
g
w
h
예상 출력. 단지를 제거하고 대신 중복 인쇄 해드립니다 :
awk 'x[$0]++'
가 다시 나타날 경우에도 그냥 중복 당 하나 개의 라인을 인쇄하려면 :
단어가 한 줄에 한 단어에있는 경우awk 'x[$0]++ == 1'
(또는 한 문장 "단어")
uniq -d YourFile
경우 멀티 워드 1 등
tr " " "\n" YourFile | uniq -d
당신 (GNU이 나오지도)에 대한이 작동 될 수 있습니다
sed -rn 'G;h;/^(\S+).*\1/P' file
이 파일에서 발생 (이 경우 단일 문자에) 현재 행의 중복을 인쇄하는 역 참조를 사용합니다.
sed -rn 'G;h;/^(\S+).*\1/!b;/^(\S+).*\1.*\1/b;P' file
이 옵션은 파일에서 현재 행 (이 경우 하나의 문자)이 하나만 나오는 경우에만 인쇄하기 위해 역 참조를 사용합니다.
'uniq -d'는 필요한 결과만을 생성합니다 ** ** 파일이 처음으로 정렬되면 __unless__ 결과가 연속 된 행에 우연히 일치합니다. – potong
맞습니다. 우선 sort -u를 사용하여 파일을 정렬하는 것을 잊었습니다. 이제 문제는 "shoud/could"이 파일을 일종의 방식으로 수정하는 것입니다. 그렇지 않은 경우, 단어를 인쇄해야하는 위치 (첫 번째 또는 마지막 항목 주문) – NeronLeVelu