Com trobar dades duplicades en un fitxer de text de Linux amb uniq

Com trobar dades duplicades en un fitxer de text de Linux amb uniq

Us heu trobat mai amb fitxers de text amb línies repetides i paraules duplicades? Potser treballeu regularment amb la sortida d'ordres i voleu filtrar-los per a cadenes diferents. Quan es tracta de fitxers de text i l'eliminació de dades redundants a Linux, l'ordre uniq és la vostra millor opció.





En aquest article, analitzarem l'ordre uniq en profunditat, juntament amb una guia detallada sobre com utilitzar l'ordre per eliminar línies duplicades d'un fitxer de text.





Què és l'ordre uniq?

L'ordre uniq a Linux s'utilitza per mostrar línies idèntiques en un fitxer de text. Aquesta ordre pot ser útil si voleu eliminar paraules o cadenes duplicades d'un fitxer de text. Com que l'ordre uniq coincideix amb línies adjacents per trobar còpies redundants, només funciona amb fitxers de text ordenats.





Per sort, podeu arreglar el tub ordenar ordre amb uniq per organitzar el fitxer de text de manera compatible amb l'ordre. A part de mostrar línies repetides, l'ordre uniq també pot comptar l'aparició de línies duplicades en un fitxer de text.

Com s'utilitza l'ordre uniq

Hi ha diverses opcions i indicadors que podeu utilitzar amb uniq. Alguns d’ells són bàsics i realitzen operacions senzilles com ara imprimir línies repetides, mentre que d’altres són per a usuaris avançats que treballen sovint amb fitxers de text a Linux.



Sintaxi bàsica

La sintaxi bàsica de l'ordre uniq és:

uniq option input output

... on opció és el senyalador utilitzat per invocar mètodes específics de l'ordre, entrada és el fitxer de text per processar i sortida és el camí del fitxer que emmagatzemarà la sortida.





El sortida L'argument és opcional i es pot ometre. Si un usuari no especifica el fitxer d'entrada, uniq pren les dades de la sortida estàndard com a entrada. Això permet a l'usuari connectar uniq amb altres ordres de Linux .

Fitxer de text d'exemple

Farem servir el fitxer de text duplicat.txt com a entrada de l'ordre.





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.

Tingueu en compte que ja hem ordenat aquest fitxer de text amb el fitxer ordenar comandament. Si esteu treballant amb algun altre fitxer de text, podeu ordenar-lo mitjançant l'ordre següent:

sort filename.txt > sorted.txt

Elimineu les línies duplicades

L'ús més bàsic d'uniq és eliminar cadenes repetides de l'entrada i imprimir una sortida única.

uniq duplicate.txt

Sortida:

Fixeu-vos que el sistema no mostra la segona ocurrència de la línia Es tracta d’un fitxer de text . A més, l'ordre esmentada només imprimeix les línies úniques del fitxer i no afecta el contingut del fitxer de text original.

Compteu les línies repetides

Per generar el nombre de línies repetides en un fitxer de text, utilitzeu el fitxer -c marca amb l'ordre per defecte.

uniq -c duplicate.txt

Sortida:

El sistema mostra el recompte de cada línia que hi ha al fitxer de text. Es pot veure que la línia Es tracta d’un fitxer de text es produeix dues vegades al fitxer. Per defecte, l'ordre uniq distingeix entre majúscules i minúscules.

Per imprimir només línies duplicades des del fitxer de text, utilitzeu el fitxer -D bandera. El -D significa Duplicat .

uniq -D duplicate.txt

El sistema mostrarà la sortida de la següent manera.

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

Omet els camps mentre cerques duplicats

Si voleu ometre un nombre determinat de camps mentre coincideix amb les cadenes, podeu utilitzar el fitxer -f marca amb l'ordre. El -f significa Camp .

Penseu en el fitxer de text següent fields.txt .

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

Per ometre el primer camp:

uniq -f 1 fields.txt

Sortida:

192.168.0.1 TCP
Linux FS

L'esmentada ordre va saltar el primer camp (les adreces IP i els noms del SO) i va coincidir amb la segona paraula (TCP i FS). A continuació, va mostrar la primera ocurrència de cada coincidència com a sortida.

Ignoreu els caràcters en comparar

Igual que saltar camps, també podeu saltar caràcters. El -s flag us permet especificar el nombre de caràcters que voleu saltar mentre coincideix amb línies duplicades. Aquesta funció ajuda quan les dades amb les quals esteu treballant es troben en forma de llista de la següent manera:

veure pel·lícules gratuïtes sense inscripcions ni descàrregues
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Per ignorar els dos primers caràcters (la numeració de la llista) del fitxer llista.txt :

uniq -s 2 list.txt

Sortida:

A la sortida anterior, els dos primers caràcters es van ignorar i la resta es van coincidir per obtenir línies úniques.

Comproveu el número N primer de caràcters per si hi ha duplicats

El -en flag us permet comprovar si hi ha duplicats en un nombre fix de caràcters. Per exemple:

uniq -w 2 duplicate.txt

L'ordre esmentada només coincidirà amb els dos primers caràcters i imprimirà línies úniques si n'hi ha.

Sortida:

Elimineu la sensibilitat entre majúscules i minúscules

Com s'ha esmentat anteriorment, uniq distingeix entre majúscules i minúscules mentre coincideix amb línies d'un fitxer. Per ignorar les majúscules i minúscules, utilitzeu -i opció amb l’ordre.

uniq -i duplicate.txt

Veureu la següent sortida.

Avís a la sortida anterior, uniq no mostrava les línies AGAFA AIX. i AQUEST ÉS UN FITXER DE TEXT .

Envia la sortida a un fitxer

Per enviar la sortida de l'ordre uniq a un fitxer, podeu utilitzar el fitxer Redirecció de sortida ( > ) caràcter de la següent manera:

uniq -i duplicate.txt > otherfile.txt

Mentre s’envia una sortida a un fitxer de text, el sistema no mostra la sortida de l’ordre. Podeu comprovar el contingut del fitxer nou mitjançant el fitxer gat comandament.

cat otherfile.txt

També podeu utilitzar altres maneres de fer-ho enviar la sortida de línia d'ordres a un fitxer a Linux .

Analitzar dades duplicades amb uniq

La majoria de les vegades mentre administreu servidors Linux, treballareu al terminal o editeu fitxers de text. Per tant, saber eliminar les còpies de línies redundants d’un fitxer de text pot ser un gran avantatge per al vostre conjunt d’habilitats de Linux.

Treballar amb fitxers de text pot resultar frustrant si no sabeu filtrar i ordenar el text en un fitxer. Per facilitar el vostre treball, Linux té diverses ordres d'edició de text, com ara sed i awk que us permeten treballar de manera eficient amb fitxers de text i sortides de línia d'ordres.

Compartir Compartir Tweet Correu electrònic Aquests 10 exemples Sed us convertiran en un usuari avançat de Linux

Voleu convertir-vos en un usuari avançat de Linux? Conèixer el sed ajudarà. Apreneu d’aquests 10 exemples sed.

Llegiu a continuació
Temes relacionats
  • Linux
  • Linux
Sobre l'autor Deepesh Sharma(79 articles publicats)

Deepesh és l'editor júnior de Linux a MUO. Escriu guies informatives a Linux, amb l'objectiu de proporcionar una experiència feliç a tots els nouvinguts. No estic segur de les pel·lícules, però si vols parlar de tecnologia, ell és el teu noi. Durant el temps lliure, el trobareu llegint llibres, escoltant diferents gèneres musicals o tocant la seva guitarra.

Més de Deepesh Sharma

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us