Eliminați liniile duplicate dintr-un fișier

Fac un dicționar cu cele mai utilizate parole, cele mai populare sau cele mai frecvent utilizate de utilizatori (... Nu întreba de ce ... HAHAHA), pentru aceasta iau text din alte dicționare etc, dar mă găsesc în situația că există multe parole duplicate și trebuie să elimin liniile duplicate.

Adică, de exemplu ... avem următorul fișier: trece.txt

Și conținutul său este:

asdasd
Lola
dragoste
asdasd
ferestre
admin
linux
asdasd
dragoste

 După cum vedem, am repetat «dragoste»Y«asdasd«, Acesta din urmă de 3 ori. Cum se elimină liniile duplicate?

Pentru a face acest lucru este simplu, cu această comandă:

cat pass.txt | sort | uniq > pass-listos.txt

Aceasta va genera un fișier numit trece-gata.txt care va conține:

admin
asdasd
linux
Lola
dragoste
ferestre

Comanda este foarte simplă ...

  1. cat pass.txt - »Enumerați conținutul fișierului.
  2. fel - »Sortați conținutul alfabetic.
  3. unic - »Elimină liniile duplicate.
  4. > pass-ready.txt - »Rezultatul comenzilor anterioare, puneți-l în fișierul pass-ready.txt (care, deoarece nu există, îl va crea)

Este atât de simplu ... Tocmai am descoperit că comanda fel da, este foarte bine ... dar, împreună cu unic, sunt o bijuterie a artei 😀

Sper că ai fost de ajutor.

În ceea ce priveşte

Tapet: Dacă doriți să descărcați tapetul «I Love #! / Bin / bash»Iată linkul:

Descărcați imaginea de fundal

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Carlos el a spus

    De asemenea, puteți utiliza sort -u.

    Felicitări pentru blog, îmi place!

    1.    KZKG ^ Gaara el a spus

      Da, sigur.
      Nimic, vă mulțumesc foarte mult pentru comentarii 😀

      Bun venit 😉
      În ceea ce priveşte

  2.   Diego el a spus

    Problema cu asta este că schimbă ordinea cuvintelor, funcționează ... dar în cele din urmă rezultatul diferă mult de original în ordine (ceea ce poate, într-un caz, contează)

    1.    KZKG ^ Gaara el a spus

      Da, într-adevăr, aceasta ordonează cuvintele în ordine alfabetică, deci dacă conținutul a fost necesar FĂRĂ variații, această soluție nu este cea ideală.

    2.    Carlos el a spus

      Nu vă înșurubați, ce se întâmplă dacă vi se întâmplă să nu puneți comanda de sortare? vă rog să vă mai gândiți puțin și să nu aveți totul mestecat.

      cat pass.txt | uniq> pass-ready.txt

      1.    Eliuber el a spus

        nu merge, l-am încercat

      2.    Bob el a spus

        nu funcționează deoarece liniile „repetate” trebuie să fie continue

  3.   anonim el a spus

    Gracias

    este destul de util

  4.   giskard el a spus

    Foarte bine! O soluție simplă și clară. Îmi plac lucrurile de genul 🙂
    Trebuie să recunosc că aș fi făcut ceva în Python, dar această soluție este în regulă.

    1.    KZKG ^ Gaara el a spus

      Mulţumiri ^ - ^

  5.   tino el a spus

    Salut! foarte bine!
    Am o întrebare, vă rog
    ar funcționa pentru mine pentru următorul exemplu:
    ABCD 1111
    DEFG 2222 45455
    ABCD 1111
    DEFG 2222

    Rândurile sunt aceleași, dar au spații și încă câteva caractere ... verifică acest lucru pentru același cuvânt? sau pe linie? Explic?
    de acum iti multumesc mult.
    O imbratisare

    1.    KZKG ^ Gaara el a spus

      Bună ziua acolo,
      După cum am văzut, acest lucru compară liniile și nu coloanele, așa că în exemplul pe care mi-l dați, acest lucru ar elimina fie prima linie, fie a treia, a doua și a 1-a linie, deși sunt aproape identice, nu sunt 3% identice, deoarece au o coloană diferență. 😉

      Mulțumesc pentru comentariu ^ - ^

      1.    TINE el a spus

        Multumita tie!! înainte a fost nevoie de o oră pentru ca Oracle să elimine duplicatele ... acum durează 30 de secunde cu pisica sort !!

  6.   MegaBedder el a spus

    Îl cer în PHP: S

    1.    KZKG ^ Gaara el a spus

      Uff ... Sunt PHP, sunt foarte, foarte scurt, nu sunt chiar programator 🙁

      Îmi pare rău.

    2.    brunocascio el a spus

      Pentru PHP există array_unique (...) în documentația oficială PHP veți găsi multe funcții importante și eficiente.

      În ceea ce privește tipul, dacă nu aveți nevoie de el, nu este necesar ... Timpul de execuție și memoria sunt irosite. (pentru ceea ce se face în postare)

      Salutări!

  7.   geek el a spus

    Wow !! un dicționar de folosit ca forță brută !! XD

  8.   Gustavo el a spus

    Foarte bine combinația sort cu uniq! M-a ajutat foarte mult să îndepărtez liniile duplicat.

    Mulţumiri

  9.   Gustavo el a spus

    Comentariul lui Carlos, în ciuda aroganței sale, nu este valid. El spune să folosească:

    cat pass.txt | uniq> pass-ready.txt

    cu toate acestea, o condiție prealabilă a uniq este ca fișierul să fie comandat. Ar fi trebuit să te gândești la asta puțin mai mult sau să te informezi înainte.

  10.   Eliuber el a spus

    foarte bine, mi-ai economisit mult timp conducându-mi bashul

  11.   Flintstones el a spus

    awk '! array_temp [$ 0] ++' pass.txt> pass-ready.txt
    cu aceasta liniile sunt eliminate fără a fi nevoie să comanzi.

  12.   miniminime el a spus

    Vă mulțumesc foarte mult pentru contribuție!

    Deși ar fi grozav să îl puteți face unic fără a schimba comanda, dar hei, o comandă ușoară și utilă!

  13.   Felipe Gutierrez el a spus

    Mulțumesc, m-a ajutat foarte mult 😉

  14.   Ernesto el a spus

    am asta
    C000006158880201502051056088364 C00-06158880
    C000007601673201503051056088364 C00-07601673
    C000008659304201504051056088364 C00-08659304
    T 0809074070562015120818144287185REAÑO RUBIÑOS EMILIA DORIS
    T 0809092979972016010818144287185REAÑO RUBIÑOS EMILIA DORIS
    C000005398451201501231044214375 C00-05398451
    C000007674996201503051000000286 C00-07674996
    C000008514288201504051000000463 C00-08514288
    C000011613498201506051056088070 C00-11613498

    Cum o fac să pictez doar duplicatele pe abonat într-un fișier și să le las pe cele care nu sunt duplicate într-un altul?

    abonatul este în poziția 23 (10 poziții)

  15.   Fernando el a spus

    sortează -u -k 1,1 File.txt> result.txt

    Aceasta sortează fișierul după primul câmp

  16.   Eu sunt Diego el a spus

    2020 și încă servesc, vă mulțumesc foarte mult!

  17.   Sarah el a spus

    Bạn co thể hướng dẫn cách loại bỏ các dòng trùng lặp của nhiều textul fișierului din Linux sau Windows được không? Cũng như trường hợp của bạn, khi tôi tạo file từ điển vì tôi chia nội dung ra nên Có khá nhiều file và chắc chắn con nhiều dòng trùng lặp giữa Các file. Ví dụ: File 1 của tôi co 5 dòng, file 2 co 15 dòng (co 2 dòng trùng lặp với File 1. Tôi muốn co kết quả, File 1 vẫn giữ nguyên 5 dòng, File 2 thì only bỏ 2 dòng giống file 1 .
    Như bạn biết co nhiều li do chúng ta ko thể gộp các file txt đó lại với nhau, vì những text fișier từ điển rất ư là nhiều ký, chẳng hạn như Rockyou. Thực tế tôi muốn thực hiện điều này bên Windows hơn, và chắc chắn ko thể gộp chúng ở bên Windows được. 🙂 Hy vọng nhận được phản hồi từ bạn!