Jawaban:
Urutkan baris menurut abjad, jika belum, dan lakukan langkah-langkah berikut:
(berdasarkan pertanyaan terkait ini: Bagaimana cara menemukan dan menghapus baris duplikat dari file menggunakan Ekspresi Reguler? )
Control+F
Alihkan "mode ganti"
Alihkan "Gunakan Ekspresi Reguler" (ikon dengan .*
simbol)
Di bidang pencarian , ketik^(.*)(\n\1)+$
Di kolom " ganti dengan ", ketik$1
Dalam kasus ini, gunakan solusi di luar VS Code (lihat di sini ), atau - jika dokumen Anda tidak terlalu besar dan Anda tidak keberatan melakukan spam pada tombol Ganti Semua - ikuti langkah sebelumnya, tetapi di langkah 4 dan 5, masukkan ini:
(berdasarkan Hapus baris duplikat tertentu tanpa penyortiran )
Perhatian: Memblokir file dengan terlalu banyak baris (1000+); dapat menyebabkan VS Code rusak; mungkin memperkenalkan baris kosong dalam beberapa kasus.
cari :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
ganti dengan :$1
dan kemudian klik tombol "Ganti Semua" sebanyak ada kejadian ganda .
Anda akan tahu itu cukup ketika jumlah baris berhenti menurun saat Anda mengklik tombol. Arahkan ke baris terakhir dokumen untuk mengawasinya.
^(.*)(\n\1)+$
. Setelah menghapus baris duplikat saya ingin melihat semua baris dengan kolom pertama duplikat di csv dan ingin memodifikasi regex.
\r?
sedikit dari jawaban lain tidak terlalu diperlukan.
Ini ekstensi yang sangat menarik: Transformer
Fitur:
Untuk menghapus garis duplikat:
Menghapus garis duplikat dari dokumen
Beroperasi pada pemilihan atau blok saat ini jika tidak ada pilihan
Saya belum banyak bermain dengannya selain perintah "Unique Lines" tetapi tampaknya dilakukan dengan cukup baik (termasuk mencoba perekam makro!).
Untuk menambah balasan @ Marc.2377.
Jika urutannya penting dan Anda tidak peduli bahwa Anda hanya menyimpan baris duplikat terakhir, cukup cari regexp berikut jika Anda hanya ingin menghapus baris duplikat yang tidak kosong
^(.+\n)(?=(?:.*\n)*?\1)
Jika Anda juga ingin menghapus baris kosong duplikat, gunakan *
bukan+
^(.*\n)(?=(?:.*\n)*?\1)
dan ganti dengan apa-apa.
Ini akan mengambil satu garis dan mencoba untuk menemukan lebih banyak lagi (mungkin 0) garis yang diikuti oleh garis yang sama persis dengan yang diambil. Ini akan menghapus garis yang diambil.
Ini hanyalah regex sekali pakai. Tidak perlu mengirim spam tombol ganti.
^(.+\n)(?=(?:.*\n)*?\1)
sebaliknya karena ekspresi reguler Anda menghapus baris kosong yang tidak diharapkan. Tetap diberi suara positif.
xxx(?=…)
adalah pertandingan yang mirip. Jadi itu memastikan bahwa, apa pun yang mengikuti "xxx" cocok dengan "…", tetapi tidak melanjutkan pencarian. (?:…)
hanyalah braket yang tidak dihitung dalam jumlah braket. .*\n
adalah pola untuk baris (mungkin kosong). *
artinya mungkin ada beberapa baris, bahkan tidak ada. The ?
setelah tanda bintang ( *
) berarti kita inginkan sebagai beberapa baris mungkin. Sebagai \1
berikut ekspresi ini efeknya adalah kita melihat ke depan untuk semua garis yang tidak cocok \1
sampai kita menemukan garis yang cocok \1
. Saya harap ini membuatnya jelas.
Saya baru saja mengalami masalah yang sama dan menemukan paket Visual Studio Code "Sort lines". Lihat pasar Visual Studio Code untuk rincian (mis. Mengurutkan baris ).
Paket ini memiliki opsi "Sorting lines (unique)", yang melakukannya untuk saya. Jaga ruang putih di awal / akhir baris. Mereka mempengaruhi apakah garis dianggap unik atau tidak.
Instal ekstensi DupChecker , tekan F1, dan ketik "Periksa Duplikat".
Ini akan memeriksa duplikat dan menanyakan apakah Anda ingin menghapusnya.
Coba cari dan ganti dengan ekspresi reguler .
Temukan:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Menggantikan:
$1$2
Dimungkinkan untuk memperkenalkan beberapa varian pada kelompok pertama.
Sebenarnya tidak dalam Visual Studio Code, tetapi jika berhasil, itu berhasil.
Ini bukan jawaban terbaik, seperti yang Anda tentukan Visual Studio Code, tetapi seperti yang saya katakan: Jika berhasil, itu berhasil :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
membuat vscode saya crash .... Saya melakukan Find dalam satu file 229 baris. :(