Yanıtlar:
Halihazırda değilse, satırları alfabetik olarak sıralayın ve şu adımları uygulayın:
(bu ilgili soruya göre: Normal İfadeleri kullanarak bir dosyadan yinelenen satırları nasıl bulur ve kaldırırım? )
Control+F
"Modu değiştir" i açın
"Normal İfade Kullan" ı ( .*sembollü simge) açın
Gelen arama alanına yazın^(.*)(\n\1)+$
" Değiştir " alanına yazın$1
Bu durumda, ya VS Code dışındaki bir çözüme başvurun ( buraya bakın ) ya da - belgeniz çok büyük değilse ve Tümünü Değiştir düğmesine spam göndermekten çekinmiyorsanız - önceki adımları izleyin, ancak 4. ve 5. adımlarda, bunları girin:
( Sıralama yapmadan belirli yinelenen satırları kaldırmaya göre )
Dikkat: Çok fazla satıra (1000+) sahip dosyalar için bloklar; VS Code'un çökmesine neden olabilir; bazı durumlarda boş satırlar ekleyebilir.
arama :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
şununla değiştir :$1
ve sonra yinelenen durumlar kadar "Tümünü Değiştir" düğmesini tıklayın .
Düğmeye tıkladığınızda satır sayısının azalması durduğunda bunun yeterli olduğunu anlayacaksınız. Buna bir göz atmak için belgenin son satırına gidin.
^(.*)(\n\1)+$? Yinelenen satırları kaldırdıktan sonra, csv'de yinelenen ilk sütuna sahip tüm satırlara bakmak ve regex'i değiştirmek istiyorum.
\r?diğer cevabın bir kısmı gerçekten gerekli değildir.
İşte çok ilginç bir uzantı: Transformer
Özellikleri:
Yinelenen satırları kaldırmak için:
Belgeden yinelenen satırları kaldırır
Seçim yoksa, seçim veya mevcut blokta çalışır
"Unique Lines" komutunun yanı sıra onunla pek oynamadım ama oldukça iyi yapılmış gibi görünüyor (bir makro kaydediciyi denemek dahil!).
@ Marc.2377 yanıtına eklemek için.
Sıra önemliyse ve yinelenen satırların sonuncusunu saklamanız sizin için önemli değilse, yalnızca boş olmayan yinelenen satırları kaldırmak istiyorsanız aşağıdaki normal ifadeyi aramanız yeterlidir.
^(.+\n)(?=(?:.*\n)*?\1)
Yinelenen boş satırları da kaldırmak istiyorsanız, *bunun yerine kullanın+
^(.*\n)(?=(?:.*\n)*?\1)
ve hiçbir şeyle değiştirin.
Bu bir çizgi alacak ve ileride daha fazla (belki 0) satır bulmaya çalışacak ve ardından aynı çizgiyi çekecektir. Alınan hattı kaldıracaktır.
Bu sadece tek seferlik bir normal ifadedir. Değiştir düğmesini spam yapmaya gerek yok.
^(.+\n)(?=(?:.*\n)*?\1)yerine, normal ifadeniz beklenmeyen bir yerde boş bir satırı kaldırdığı için öneririm . Yine de oy verildi.
xxx(?=…)ileriye dönük bir eşleşmedir. Bu nedenle, "xxx" den sonra gelen her şeyin "…" ile eşleştiğinden emin olur, ancak aramayı ilerletmez. (?:…)sadece parantez sayısında yer almayan bir parantezdir. .*\n(muhtemelen boş) bir çizgi için bir kalıptır. *birkaç satır olabileceği, hatta hiç olmadığı anlamına gelir. ?Yıldız işareti sonra ( *) aracı mümkün olduğunca az çizgiler olarak açıkladılar. \1Aşağıdaki gibi , bu ifadenin etkisi, \1bir satır eşleşmesi bulana kadar eşleşmeyen tüm satırları ileriye bakmamızdır \1. Umarım bu anlaşılır olur.
Aynı sorunu yaşadım ve "Satırları sırala" Visual Studio Kod paketini buldum. Ayrıntılar için Visual Studio Code pazarına bakın (ör. Satırları sıralama . ).
Bu pakette, benim için bunu yapan "Satırları sıralama (benzersiz)" seçeneği var. Satırın başındaki / sonundaki beyaz boşluklara dikkat edin. Çizgilerin benzersiz olarak kabul edilip edilmeyeceğini etkilerler.
Normal bir ifadeyle bulup değiştirmeyi deneyin .
Bul:
^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
Değiştirin:
$1$2
Birinci grupta bazı varyanslar getirmek mümkündür.
Aslında Visual Studio Code'da değil, ancak çalışırsa çalışır.
Visual Studio Code belirttiğiniz gibi en iyi cevap değil ama dediğim gibi: Çalışırsa çalışır :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?vscode çökmesine neden oldu .... Bir dosyada 229 satır Bul yaptım. :(