Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

🗑 Miten poistaa kaksoiskappaleet rivit Notepad++:ssa: 3 menetelmää

🗑 Miten poistaa kaksoiskappaleet rivit Notepad++:ssa: 3 menetelmää

Kaksoiskappaleet lokeissa, CSV-vienneissä ja asetustiedostoissa: päänsärky, joka on tuttu jokaiselle, joka on joskus jäsentänyt käsin 500 megatavun tietokantavedosta. Avaat tiedoston ja puolet riveistä on toistuvia. Niiden poistaminen käsin on toivotonta, kun rivejä on tuhansia.

Notepad++ hoitaa tämän sekunneissa. Editori tarjoaa kolme tapaa: sisäänrakennetusta ominaisuudesta, joka vaatii kaksi klikkausta, aina monimutkaisiin tilanteisiin sopiviin säännöllisiin lausekkeisiin. Valitse tehtävääsi sopiva.

💡 Pikakatsaus:

  • Tapa 1, sisäänrakennettu ominaisuus: Muokkaa → Rivitoiminnot → Poista kaksoiskappaleet. Kaksi klikkausta, toimii versiossa 7.6+ ja 64-bittisenä.
  • Tapa 2, säännöllinen lauseke: poistaa kaksoiskappaleet lajittelematta, säilyttäen rivien järjestyksen. Erittäin muokattavissa.
  • Tapa 3, TextFX-liitännäinen: klassikko, mutta vain 32-bittiselle versiolle. 64-bittiselle on olemassa haara nimeltä TextFX2.

Tapa 1: Notepad++:n sisäänrakennettu ominaisuus

Yksinkertaisin ja nopein tapa. Se ilmestyi versiossa 7.6 ja toimii kaikissa nykyaikaisissa koontiversioissa, mukaan lukien nykyinen v8.9.6. Liitännäisiä ei tarvita, kaikki toimii suoraan paketista.

Avaa tiedosto Notepad++:ssa, valitse kaikki sisältö (Ctrl + A) ja siirry kohtaan Muokkaa → Rivitoiminnot → Poista kaksoiskappaleet. Valmista, kaikki toistuvat rivit on poistettu, vain uniikit rivit jäävät jäljelle.

Käytettävissä on myös Poista peräkkäiset kaksoiskappaleet, joka poistaa vain peräkkäin esiintyvät kaksoiskappaleet koskematta identtisiin riveihin muualla tiedostossa. Hyödyllinen lokien siivoamiseen, joissa toistot kertyvät lohkoihin.

Huomio: ominaisuus poistaa KAIKKI kaksoiskappaleet, säilyttäen vain kunkin rivin ensimmäisen esiintymän. Jos tiedostosi sisältää merkityksellisiä toistoja (esimerkiksi identtisiä sulkevia sulkeita JSON:ssa tai XML:ssä), tämä tapa ei sovi. Siinä tapauksessa katso tapa 2, jossa käytetään säännöllistä lauseketta.

Tapa 2: etsi ja korvaa säännöllisellä lausekkeella

Säännöllinen lauseke antaa täyden hallinnan. Toisin kuin sisäänrakennettu ominaisuus, sen avulla voit poistaa kaksoiskappaleet ilman esilajittelua: rivit pysyvät alkuperäisessä järjestyksessään samalla kun toistot katoavat.

Avaa hakudialogi (Ctrl + H), vaihda Korvaa-välilehdelle ja täytä kentät:

Kenttä

Arvo

Etsi

^(.*?)$\s+?^(?=.*^\1$)

Korvaa

(jätä tyhjäksi)

Hakutila

Säännöllinen lauseke

. vastaa rivinvaihtoa

Ei valintaa

Klikkaa Korvaa kaikki. Notepad++ käy läpi koko tiedoston, etsii rivit, jotka toistuvat jossain myöhempänä, ja poistaa ne. Tuloksena jokaisesta kaksoiskappalejoukosta jää jäljelle vain viimeinen esiintymä.

Miten se toimii: ^(.*?)$ kaappaa rivin ensimmäiseen ryhmään, \s+? hyppää rivien välisen tyhjän tilan yli, ja (?=.*^\1$) on positiivinen eteenpäin katsova ehto, joka tarkistaa, esiintyykö tämä sama rivi (\1) myöhemmin tiedostossa. Jos esiintyy, nykyinen esiintymä poistetaan.

Säännöllisen lausekkeen etu on, että voit mukauttaa kaavaa. Lisää esimerkiksi ^ kaappauksen alkuun, jos tarvitset tarkan osuman rivin alusta, tai korvaa \s+? merkkijonolla \r?\n ankkuroidaksesi tiukasti rivinvaihtoihin.

Tapa 3: TextFX-liitännäinen

Klassinen tapa, joka on ollut olemassa vuosia. TextFX oli vakioliitännäinen vanhemmissa 32-bittisissä Notepad++-koontiversioissa. Tilanne on muuttunut: alkuperäinen TextFX ei ole yhteensopiva 64-bittisen version kanssa versiosta v8.4 alkaen, ja se on poistettu vakiojakelusta.

Jos käytät 32-bittistä Notepad++:aa, asenna liitännäinen kohdasta Liitännäiset → Liitännäishallinta → Näytä liitännäishallinta → Saatavilla → TextFX → Asenna. Asennuksen jälkeen valikkoon ilmestyy TextFX → TextFX Tools -osio.

TextFX-liitännäisen valikko rivien lajitteluasetuksilla

Varmista, että Sort lines case sensitive -valintaruutu on valittuna (tai case insensitive, valintasi mukaan). Valitse teksti (Ctrl + A) ja klikkaa Sort lines case sensitive. Liitännäinen lajittelee rivit asettaen kaksoiskappaleet vierekkäin. Tämän jälkeen Muokkaa → Rivitoiminnot → Poista peräkkäiset kaksoiskappaleet poistaa toistot.

64-bittiselle versiolle on olemassa moderni haara nimeltä TextFX2. Se on saatavilla GitHubissa (rainman74/NPPTextFX2) ja asennetaan manuaalisesti: lataa DLL, sijoita se plugins\NPPTextFX2-kansioon Notepad++:n hakemistossa ja käynnistä editori uudelleen. Toiminnallisuus on sama: lajittelu, kaksoiskappaleiden poistaminen, kirjainkoon muuntaminen.

Jos tehtävä on kertaluonteinen etkä halua asentaa liitännäistä, tapa 1 on enemmän kuin riittävä.

⁉️🤔 Usein kysytyt kysymykset

Miksi Notepad++ ei poista kaikkia kaksoiskappaleita?

Todennäköisesti rivit eivät ole tavutasolla identtisiä. Tarkista näkymättömät merkit: perässä olevat välilyönnit, sarkaimet välilyöntien sijasta, eri kirjainkoko. Ota käyttöön Näytä → Näytä symboli → Näytä kaikki merkit nähdäksesi, mikä tekee riveistä erilaisia.

Miten poistan kaksoiskappaleet ILMAN kirjainkoon huomioimista?

Sisäänrakennettu Poista kaksoiskappaleet huomioi kirjainkoon: "WordPress" ja "wordpress" ovat eri rivejä. Poistaaksesi kaksoiskappaleet kirjainkoosta riippumatta, muunna ensin teksti yhteen kirjainkokoon kohdasta Muokkaa → Muunna kirjainkoko → Pienet kirjaimet (tai Isot kirjaimet) ja suorita sitten Poista kaksoiskappaleet. Vaihtoehtoisesti käytä tapaa 2 ja lisää säännöllisen lausekkeen lippu (?i) kaavan alkuun.

Voinko poistaa kaksoiskappaleita useista tiedostoista kerralla?

Notepad++ ei tue usean tiedoston hakua ja korvausta säännöllisillä lausekkeilla vakioliittymänsä kautta. Voit kuitenkin käyttää Etsi tiedostoista -toimintoa (Ctrl + Shift + F) löytääksesi rivejä säännöllisellä lausekkeella kaikista kansion tiedostoista. Eräkorvaukseen useissa tiedostoissa Python- tai PowerShell-skripti on kätevämpi: lue tiedosto, käytä säännöllistä lauseketta, korvaa sisältö. Vaihtoehtoisesti käytä Notepad++:n Python Script -liitännäistä mukautetulla skriptillä.

Mikä on nopeampi suurella tiedostolla, sisäänrakennettu ominaisuus vai säännöllinen lauseke?

Sisäänrakennettu Poista kaksoiskappaleet on huomattavasti nopeampi yli 50 Mt:n tiedostoilla, koska se on natiivia C++-koodia säännöllisen lausekkeen moottorin sijaan. Säännöllisen lausekkeen menetelmä alkaa hidastua merkittävästi sadoilla tuhansilla riveillä eteenpäin katsovien ehtojen vuoksi. Vertailun vuoksi: 200 000 rivin CSV-tiedostolla sisäänrakennettu ominaisuus valmistuu 2-3 sekunnissa, kun taas säännöllinen lauseke vie 15-20 sekuntia.

Poistin kaksoiskappaleet; miten perun, jos se meni pieleen?

Ctrl + Z peruu viimeisimmän toimenpiteen. Jos suljit tiedoston tallentamatta, älä yksinkertaisesti tallenna muutoksia poistuessasi. Joka tapauksessa, ennen massaeditointia kopioi alkuperäinen tiedosto viereiseen kansioon: vie sekunnin, säästää tunteja.

Mikä tapa valita tehtävääsi

Jos haluat nopeasti siivota lokit tai CSV:n toistoista, käytä sisäänrakennettua ominaisuutta (tapa 1). Kaksi klikkausta, välitön tulos, ei liitännäisiä. Tämä on oletusvalinta valtaosaan tilanteista. Tulos on näkyvissä välittömästi ilman lisävaiheita.

Säännöllinen lauseke (tapa 2) on silloin, kun alkuperäisellä rivijärjestyksellä on merkitystä tai tarvitset hienosäätöä: kaksoiskappaleiden poistaminen vain valitusta osiosta, kirjainkoon huomiotta jättäminen, sisäkkäisten toistojen käsittely. Tehokkaampi, mutta vaatii syntaksin ymmärtämistä.

TextFX (tapa 3) on vain, jos olet 32-bittisessä versiossa ja olet tottunut tähän työnkulkuun. 64-bittiselle on TextFX2, mutta nyt kun sisäänrakennettu ominaisuus on saatavilla, liitännäinen on lähes käynyt tarpeettomaksi.

Kokeile sisäänrakennettua ominaisuutta heti mihin tahansa toistoja sisältävään tekstitiedostoon. Se vie 5 sekuntia.