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.
Imprimați numai linii repetate
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 LinuxDoriț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
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 SharmaAboneaza-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