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ă ...
- cat pass.txt - »Enumerați conținutul fișierului.
- fel - »Sortați conținutul alfabetic.
- unic - »Elimină liniile duplicate.
- > 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
De asemenea, puteți utiliza sort -u.
Felicitări pentru blog, îmi place!
Da, sigur.
Nimic, vă mulțumesc foarte mult pentru comentarii 😀
Bun venit 😉
În ceea ce priveşte
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ă)
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ă.
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
nu merge, l-am încercat
nu funcționează deoarece liniile „repetate” trebuie să fie continue
Gracias
este destul de util
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ă.
Mulţumiri ^ - ^
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
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 ^ - ^
Multumita tie!! înainte a fost nevoie de o oră pentru ca Oracle să elimine duplicatele ... acum durează 30 de secunde cu pisica sort !!
Îl cer în PHP: S
Uff ... Sunt PHP, sunt foarte, foarte scurt, nu sunt chiar programator 🙁
Îmi pare rău.
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!
Wow !! un dicționar de folosit ca forță brută !! XD
Foarte bine combinația sort cu uniq! M-a ajutat foarte mult să îndepărtez liniile duplicat.
Mulţumiri
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.
foarte bine, mi-ai economisit mult timp conducându-mi bashul
awk '! array_temp [$ 0] ++' pass.txt> pass-ready.txt
cu aceasta liniile sunt eliminate fără a fi nevoie să comanzi.
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ă!
Mulțumesc, m-a ajutat foarte mult 😉
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)
sortează -u -k 1,1 File.txt> result.txt
Aceasta sortează fișierul după primul câmp
2020 și încă servesc, vă mulțumesc foarte mult!
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!