Saya punya file [csv] dengan duplikat datum yang dicetak ulang yaitu data yang sama dicetak dua kali. Saya sudah mencoba menggunakan semacam uniq
oleh sort myfile.csv | uniq -u
namun tidak ada perubahan dalam myfile.csv
, juga saya sudah mencoba sudo sort myfile.csv | uniq -u
tetapi tidak ada perbedaan.
Jadi saat ini file csv saya terlihat seperti ini
a
a
a
b
b
c
c
c
c
c
Saya ingin terlihat seperti itu
a
b
c
text-processing
files
3kstc
sumber
sumber
man sort
, Anda tidak dapat mengurutkan "di tempat".Jawaban:
Alasan
myfile.csv
tidak berubah adalah karena-u
opsi hanyauniq
akan mencetak garis yang unik. Dalam file ini, semua baris adalah duplikat sehingga tidak akan dicetak.Namun, yang lebih penting, output tidak akan disimpan
myfile.csv
karenauniq
hanya akan mencetaknya kestdout
(secara default, konsol Anda).Anda perlu melakukan sesuatu seperti ini:
$ sort -u myfile.csv -o myfile.csv
Opsi artinya:
-u
- hanya menyimpan garis yang unik-o
- Output ke file ini bukanstdout
Anda harus melihat
man sort
informasi lebih lanjut.sumber
Seperti yang ditunjukkan Belmin, sort itu hebat. Jawabannya terbaik untuk data yang tidak disortir, dan mudah diingat dan digunakan.
Namun, ini juga tidak stabil, karena mengubah urutan input. Jika Anda benar-benar harus memiliki data melalui dalam urutan yang sama tetapi menghapus duplikat kemudian, awk mungkin lebih baik.
Kasing tepi yang aneh, tetapi muncul dari waktu ke waktu.
Juga, jika data Anda sudah diurutkan ketika Anda menusuknya, Anda bisa menjalankan uniq.
Kelemahan dari kedua saran saya adalah Anda harus menggunakan file sementara dan menyalinnya kembali.
sumber
uniq
-u
hanya mencetak garis unik. Masukan Anda tidak memiliki garis unik, jadiuniq -u
cetaklah apa-apa. Anda hanya perlusort
:sumber
Jika Anda ingin mempertahankan urutan file (tidak diurutkan) tetapi masih menghapus duplikat Anda juga dapat melakukan ini
Sebagai contoh
Ini akan menampilkan
sumber