고유 한 줄을 찾고 파일에서 모든 중복을 제거하려면 어떻게해야합니까? 내 입력 파일은
1
1
2
3
5
5
7
7
결과는 다음과 같습니다.
2
3
sort file | uniq
일을하지 않을 것입니다. 모든 값을 한 번 표시합니다.
고유 한 줄을 찾고 파일에서 모든 중복을 제거하려면 어떻게해야합니까? 내 입력 파일은
1
1
2
3
5
5
7
7
결과는 다음과 같습니다.
2
3
sort file | uniq
일을하지 않을 것입니다. 모든 값을 한 번 표시합니다.
sort file | uniq
는 모든 값을 1 번 표시 하는 이유 는 처음 만난 줄을 즉시 인쇄하고 이후의 만남에서는 건너 뛰기 때문이라고 생각합니다.
답변:
uniq
필요한 옵션이 있습니다.
-u, --unique
only print unique lines
$ cat file.txt
1
1
2
3
5
5
7
7
$ uniq -u file.txt
2
3
다음과 같이 사용하십시오.
sort < filea | uniq > fileb
uniq -u filea > fileb
sort<filea.txt | uniq>fileb.txt
. 확장 기능을 생략했을 수도 있습니다. 나는 당신이에서 가야 맥 OS X를 사용하고 filea.txt
다른에fileb.txt
sort
과에 배관의 지점 무엇 uniq
당신은 그냥 할 수있을 때 sort -u file -o file
중복 값이 즉 당신이 제거되는 일을하는지 fileb
포함 1,2,3,5,7
영업 인 경우에만 고유 라인 원 2,3
에 의해 달성되는 uniq -u file
파일 확장자는 아무 상관이 그것으로, 당신의 대답은 잘못되었습니다.
당신은 또한 사용 "파일"의 고유 한 값을 출력 할 수 있습니다 cat
에 파이프하여 명령을 sort
하고uniq
cat file | sort | uniq -u
uniq -u는 작동하지 않았기 때문에 나를 미치게 만들었습니다.
그래서 그 대신 파이썬이 있다면 (대부분의 Linux 배포판과 서버에는 이미 있습니다) :
#Python
#Assuming file has data on different lines
#Otherwise fix split() accordingly.
uniqueData = []
fileData = open('notUnique.txt').read().split('\n')
for i in fileData:
if i.strip()!='':
uniqueData.append(i)
print uniqueData
###Another option (less keystrokes):
set(open('notUnique.txt').read().split('\n'))
참고로 uniq Man 페이지에서 :
"참고 : 'uniq'는 인접하지 않는 한 반복되는 줄을 감지하지 않습니다. 먼저 입력을 정렬하거나 'uniq'없이 'sort -u'를 사용할 수 있습니다. 또한 비교는 'LC_COLLATE'에 지정된 규칙을 따릅니다."
다음을 호출하는 올바른 방법 중 하나 : # sort nonUnique.txt | 유니크
$ cat x
3
1
2
2
2
3
1
3
$ uniq x
3
1
2
3
1
3
$ uniq -u x
3
1
3
1
3
$ sort x | uniq
1
2
3
uniq
어떤 이유로 파일을 정렬 할 수없는 경우 다음을 사용할 수 있습니다 awk
.
awk '{a[$0]++}END{for(i in a)if(a[i]<2)print i}'
sort -d "file name" | uniq -u
이것은 비슷한 것을 위해 나를 위해 일했습니다. 배열되지 않은 경우 사용하십시오. 정렬 된 경우 정렬을 제거 할 수 있습니다.
이것은 내가 시도한 첫 번째였습니다.
skilla:~# uniq -u all.sorted
76679787
76679787
76794979
76794979
76869286
76869286
......
cat -e all.sorted 후
skilla:~# cat -e all.sorted
$
76679787$
76679787 $
76701427$
76701427$
76794979$
76794979 $
76869286$
76869286 $
두 번째 줄마다 후행 공백이 있습니다 :( 모든 후행 공백을 제거한 후 작동했습니다!
감사합니다
sort file | uniq -u
콘솔에 출력됩니다.