Bagaimana cara menemukan baris unik dan menghapus semua duplikat dari file? File masukan saya adalah
1
1
2
3
5
5
7
7
Saya ingin hasilnya:
2
3
sort file | uniq
tidak akan melakukan pekerjaan itu. Akan menampilkan semua nilai 1 kali
Bagaimana cara menemukan baris unik dan menghapus semua duplikat dari file? File masukan saya adalah
1
1
2
3
5
5
7
7
Saya ingin hasilnya:
2
3
sort file | uniq
tidak akan melakukan pekerjaan itu. Akan menampilkan semua nilai 1 kali
sort file | uniq
menunjukkan semua nilai 1 kali adalah karena segera mencetak garis yang ditemuinya pertama kali, dan untuk pertemuan berikutnya, itu hanya melewatinya.
Jawaban:
uniq
memiliki opsi yang Anda butuhkan:
-u, --unique
only print unique lines
$ cat file.txt
1
1
2
3
5
5
7
7
$ uniq -u file.txt
2
3
Gunakan sebagai berikut:
sort < filea | uniq > fileb
uniq -u filea > fileb
sort<filea.txt | uniq>fileb.txt
. Mungkin Anda meninggalkan ekstensi. Saya menggunakan Mac OS X. Anda harus beralih dari yang filea.txt
lainfileb.txt
sort
dan apa gunanya perpipaan uniq
ketika Anda bisa melakukan sort -u file -o file
apa yang Anda lakukan adalah menghapus nilai duplikat yaitu Anda fileb
berisi 1,2,3,5,7
OP hanya menginginkan baris unik yang 2,3
dan dicapai oleh uniq -u file
ekstensi File tidak memiliki apa-apa dengan itu, jawaban Anda salah.
Anda juga dapat mencetak nilai unik dalam "file" menggunakan cat
perintah dengan menyalurkan ke sort
danuniq
cat file | sort | uniq -u
uniq -u membuatku gila karena tidak berhasil.
Jadi, alih-alih itu, jika Anda memiliki python (sebagian besar distro dan server Linux sudah memilikinya):
#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'))
FYI saja, Dari halaman Man uniq:
"Catatan: 'uniq' tidak mendeteksi baris yang berulang kecuali jika berdekatan. Anda mungkin ingin mengurutkan input terlebih dahulu, atau menggunakan 'sort -u' tanpa 'uniq'. Selain itu, perbandingan menghormati aturan yang ditentukan oleh 'LC_COLLATE'."
Salah satu cara yang benar, untuk memanggil dengan: # sort nonUnique.txt | uniq
$ 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
kamu bisa memakai:
sort data.txt| uniq -u
ini mengurutkan data dan memfilter berdasarkan nilai unik
uniq -u < file
akan melakukan pekerjaan itu.
uniq
seharusnya baik-baik saja jika file Anda sedang / dapat diurutkan, jika Anda tidak dapat mengurutkan file karena alasan tertentu, Anda dapat menggunakan awk
:
awk '{a[$0]++}END{for(i in a)if(a[i]<2)print i}'
sort -d "file name" | uniq -u
ini berhasil bagi saya untuk yang serupa. Gunakan ini jika tidak diatur. Anda dapat menghapus sortir jika sudah diatur
Saya merasa ini lebih mudah.
sort -u input_filename > output_filename
-u
singkatan unik.
Ini yang pertama saya coba
skilla:~# uniq -u all.sorted
76679787
76679787
76794979
76794979
76869286
76869286
......
Setelah melakukan cat -e all.sorted
skilla:~# cat -e all.sorted
$
76679787$
76679787 $
76701427$
76701427$
76794979$
76794979 $
76869286$
76869286 $
Setiap baris kedua memiliki spasi tambahan :( Setelah menghapus semua spasi tambahan, ini berfungsi!
Terima kasih
sort file | uniq -u
akan menampilkan konsol untuk Anda.