Cum să găsiți date duplicate într-un fișier text Linux cu uniq

Cum să găsiți date duplicate într-un fișier text Linux cu uniq

Ați dat vreodată peste fișiere text cu linii repetate și cuvinte duplicat? Poate că lucrați regulat cu ieșirea comenzii și doriți să le filtrați pentru șiruri distincte. Când vine vorba de fișiere text și eliminarea datelor redundante în Linux, comanda uniq este cel mai bun pariu.





În acest articol, vom discuta detaliat comanda uniq, împreună cu un ghid detaliat despre cum să utilizați comanda pentru a elimina liniile duplicate dintr-un fișier text.





Ce este comanda uniq?

Comanda uniq din Linux este utilizată pentru a afișa linii identice într-un fișier text. Această comandă poate fi utilă dacă doriți să eliminați cuvintele sau șirurile duplicate dintr-un fișier text. Deoarece comanda uniq corespunde liniilor adiacente pentru găsirea copiilor redundante, funcționează numai cu fișiere text sortate.





Din fericire, puteți face pipă fel comanda cu uniq pentru a organiza fișierul text într-un mod care este compatibil cu comanda. În afară de afișarea liniilor repetate, comanda uniq poate conta și apariția liniilor duplicate într-un fișier text.

Cum se folosește comanda uniq

Există diverse opțiuni și steaguri pe care le puteți utiliza cu uniq. Unele dintre ele sunt de bază și efectuează operațiuni simple, cum ar fi imprimarea liniilor repetate, în timp ce altele sunt destinate utilizatorilor avansați care lucrează frecvent cu fișiere text pe Linux.



Sintaxa de bază

Sintaxa de bază a comenzii uniq este:

uniq option input output

...Unde opțiune este steagul folosit pentru a invoca metode specifice comenzii, intrare este fișierul text pentru procesare și ieșire este calea fișierului care va stoca ieșirea.





The ieșire argumentul este opțional și poate fi omis. Dacă un utilizator nu specifică fișierul de intrare, uniq ia date de la ieșirea standard ca intrare. Acest lucru permite utilizatorului să conecteze uniq cu alte comenzi Linux .

Exemplu de fișier text

Vom folosi fișierul text duplicat.txt ca intrare pentru comandă.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Rețineți că am sortat deja acest fișier text folosind fel comanda. Dacă lucrați cu un alt fișier text, îl puteți sorta folosind următoarea comandă:

sort filename.txt > sorted.txt

Eliminați liniile duplicate

Cea mai simplă utilizare a uniq este de a elimina șirurile repetate de la intrare și de a imprima ieșirea unică.

uniq duplicate.txt

Ieșire:

Observați că sistemul nu afișează a doua apariție a liniei Acesta este un fișier text . De asemenea, comanda menționată anterior imprimă numai liniile unice din fișier și nu afectează conținutul fișierului text original.

Numărați liniile repetate

Pentru a afișa numărul de linii repetate într-un fișier text, utilizați -c semnalizați cu comanda implicită.

uniq -c duplicate.txt

Ieșire:

Sistemul afișează numărul fiecărui rând care există în fișierul text. Puteți vedea că linia Acesta este un fișier text apare de două ori în fișier. În mod implicit, comanda uniq este sensibilă la majuscule și minuscule.

Pentru a imprima doar liniile duplicate din fișierul text, utilizați -D steag. The -D înseamnă Duplicat .

uniq -D duplicate.txt

Sistemul va afișa ieșirea după cum urmează.

This is a text file.
This is a text file.

Omiteți câmpurile în timp ce căutați duplicate

Dacă doriți să omiteți un anumit număr de câmpuri în timp ce potriviți șirurile, puteți utiliza -f steag cu comanda. The -f înseamnă Camp .

Luați în considerare următorul fișier text câmpuri.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Pentru a omite primul câmp:

uniq -f 1 fields.txt

Ieșire:

192.168.0.1 TCP
Linux FS

Comanda menționată anterior a sărit peste primul câmp (adresele IP și numele sistemului de operare) și s-a potrivit cu al doilea cuvânt (TCP și FS). Apoi, a afișat prima apariție a fiecărui meci ca ieșire.

Ignorați caracterele atunci când comparați

La fel ca săriți peste câmpuri, puteți sări și despre caractere. The -s flag vă permite să specificați numărul de caractere de omis în timp ce se potrivesc rândurile duplicate. Această funcție vă ajută atunci când datele cu care lucrați sunt sub forma unei liste, după cum urmează:

ce să faci dacă găsești un iphone
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Pentru a ignora primele două caractere (numerotările listei) din fișier list.txt :

uniq -s 2 list.txt

Ieșire:

În rezultatul de mai sus, primele două caractere au fost ignorate, iar restul au fost potrivite pentru linii unice.

Verificați numărul N primul de caractere pentru duplicate

The -în flag vă permite să verificați doar un număr fix de caractere pentru duplicate. De exemplu:

uniq -w 2 duplicate.txt

Comanda menționată mai sus se va potrivi doar cu primele două caractere și va imprima linii unice, dacă există.

Ieșire:

Eliminați sensibilitatea la majuscule

Așa cum s-a menționat mai sus, uniq este sensibil la majuscule și minuscule în timp ce se potrivesc liniile dintr-un fișier. Pentru a ignora majuscule, folosiți -i opțiune cu comanda.

uniq -i duplicate.txt

Veți vedea următoarea ieșire.

Observați în ieșirea de mai sus, uniq nu afișa liniile CAPTAȚI ACESTA și Acesta este un fișier text .

Trimiteți ieșirea către un fișier

Pentru a trimite ieșirea comenzii uniq către un fișier, puteți utiliza fișierul Redirecționare ieșire ( > ) caracterul după cum urmează:

uniq -i duplicate.txt > otherfile.txt

În timp ce trimiteți o ieșire către un fișier text, sistemul nu afișează ieșirea comenzii. Puteți verifica conținutul noului fișier folosind pisică comanda.

cat otherfile.txt

Puteți folosi și alte modalități de a trimite ieșirea din linia de comandă către un fișier în Linux .

Analizarea datelor duplicat cu uniq

De cele mai multe ori, în timp ce gestionați serverele Linux, veți lucra fie la terminal, fie editați fișiere text. Prin urmare, știind cum să eliminați copii redundante ale liniilor dintr-un fișier text poate fi un avantaj important pentru setul dvs. de abilități Linux.

Lucrul cu fișiere text poate fi frustrant dacă nu știți cum să filtrați și să sortați textul într-un fișier. Pentru a vă ușura munca, Linux are mai multe comenzi de editare a textului, cum ar fi sed și awk care vă permit să lucrați eficient cu fișiere text și ieșiri din linia de comandă.

Acțiune Acțiune Tweet E-mail Aceste 10 exemple Sed vă vor face un utilizator cu putere Linux

Doriți să deveniți un utilizator cu putere Linux? Noțiuni de bază cu sed va ajuta. Aflați din aceste 10 exemple sed.

Citiți în continuare
Subiecte asemănătoare
  • Linux
  • Linux
Despre autor Deepesh Sharma(79 articole publicate)

Deepesh este Junior Editor pentru Linux la MUO. El scrie ghiduri informaționale pe Linux, cu scopul de a oferi o experiență fericită tuturor noilor veniți. Nu sunt sigur de filme, dar dacă vrei să vorbești despre tehnologie, el este tipul tău. În timpul liber, îl poți găsi citind cărți, ascultând diferite genuri muzicale sau cântând la chitară.

Mai multe de la Deepesh Sharma

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona