Hoe dubbele gegevens in een Linux-tekstbestand te vinden met uniq

Hoe dubbele gegevens in een Linux-tekstbestand te vinden met uniq

Ben je ooit tekstbestanden tegengekomen met herhaalde regels en dubbele woorden? Misschien werk je regelmatig met commando-uitvoer en wil je die filteren op verschillende strings. Als het gaat om tekstbestanden en het verwijderen van overtollige gegevens in Linux, is de opdracht uniq de beste keuze.





In dit artikel zullen we de uniq-opdracht diepgaand bespreken, samen met een gedetailleerde handleiding over hoe de opdracht te gebruiken om dubbele regels uit een tekstbestand te verwijderen.





Wat is het uniq-commando?

Het uniq-commando in Linux wordt gebruikt om identieke regels in een tekstbestand weer te geven. Deze opdracht kan handig zijn als u dubbele woorden of tekenreeksen uit een tekstbestand wilt verwijderen. Omdat de opdracht uniq overeenkomt met aangrenzende regels voor het vinden van overtollige kopieën, werkt het alleen met gesorteerde tekstbestanden.





Gelukkig kun je de soort commando met uniq om het tekstbestand te ordenen op een manier die compatibel is met het commando. Behalve het weergeven van herhaalde regels, kan het commando uniq ook het voorkomen van dubbele regels in een tekstbestand tellen.

Hoe de uniq-opdracht te gebruiken

Er zijn verschillende opties en vlaggen die u met uniq kunt gebruiken. Sommige zijn eenvoudig en voeren eenvoudige bewerkingen uit, zoals het afdrukken van herhaalde regels, terwijl andere voor gevorderde gebruikers zijn die vaak met tekstbestanden op Linux werken.



Basissyntaxis

De basissyntaxis van het uniq-commando is:

uniq option input output

...waar optie is de vlag die wordt gebruikt om specifieke methoden van de opdracht aan te roepen, invoer is het tekstbestand voor verwerking, en uitvoer is het pad van het bestand dat de uitvoer zal opslaan.





De uitvoer argument is optioneel en kan worden overgeslagen. Als een gebruiker het invoerbestand niet specificeert, neemt uniq gegevens uit de standaarduitvoer als invoer. Dit stelt een gebruiker in staat om uniq te pipen met: andere Linux-opdrachten .

Voorbeeld tekstbestand

We gebruiken het tekstbestand dupliceren.txt als invoer voor de opdracht.





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.

Merk op dat we dit tekstbestand al hebben gesorteerd met de soort opdracht. Als u met een ander tekstbestand werkt, kunt u het sorteren met de volgende opdracht:

sort filename.txt > sorted.txt

Dubbele regels verwijderen

Het meest elementaire gebruik van uniq is om herhaalde strings uit de invoer te verwijderen en unieke uitvoer af te drukken.

uniq duplicate.txt

Uitgang:

Merk op dat het systeem het tweede voorkomen van de regel niet weergeeft Dit is een tekstbestand . Bovendien drukt het bovengenoemde commando alleen de unieke regels in het bestand af en heeft het geen invloed op de inhoud van het originele tekstbestand.

Tel herhaalde regels

Om het aantal herhaalde regels in een tekstbestand uit te voeren, gebruikt u de -C vlag met de standaardopdracht.

uniq -c duplicate.txt

Uitgang:

Het systeem geeft de telling weer van elke regel die in het tekstbestand bestaat. Je kunt zien dat de lijn Dit is een tekstbestand komt twee keer voor in het bestand. Standaard is de opdracht uniq hoofdlettergevoelig.

Om alleen dubbele regels uit het tekstbestand af te drukken, gebruikt u de -NS vlag. De -NS betekent Duplicaat .

uniq -D duplicate.txt

Het systeem geeft de output als volgt weer.

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

Velden overslaan tijdens het controleren op duplicaten

Als u een bepaald aantal velden wilt overslaan terwijl u de strings matcht, kunt u de gebruiken -F vlag met het commando. De -F betekent Veld .

Beschouw het volgende tekstbestand: velden.txt .

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

Om het eerste veld over te slaan:

uniq -f 1 fields.txt

Uitgang:

192.168.0.1 TCP
Linux FS

De bovengenoemde opdracht sloeg het eerste veld (de IP-adressen en OS-namen) over en kwam overeen met het tweede woord (TCP en FS). Vervolgens werd het eerste exemplaar van elke overeenkomst weergegeven als de uitvoer.

Negeer tekens bij het vergelijken

Net als het overslaan van velden, kunt u ook tekens overslaan. De -s flag stelt u in staat om het aantal tekens op te geven dat moet worden overgeslagen bij het matchen van dubbele regels. Deze functie helpt wanneer de gegevens waarmee u werkt als volgt in de vorm van een lijst zijn:

deze persoon heeft geprobeerd je telefoon te ontgrendelen
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

De eerste twee tekens (de lijstnummers) in het bestand negeren lijst.txt :

uniq -s 2 list.txt

Uitgang:

In de bovenstaande uitvoer werden de eerste twee tekens genegeerd en de rest werd vergeleken voor unieke regels.

Controleer het eerste N aantal tekens op duplicaten

De -in flag stelt u in staat om slechts een vast aantal tekens op duplicaten te controleren. Bijvoorbeeld:

uniq -w 2 duplicate.txt

De bovengenoemde opdracht komt alleen overeen met de eerste twee tekens en drukt eventuele unieke regels af.

Uitgang:

Hoofdlettergevoeligheid verwijderen

Zoals hierboven vermeld, is uniq hoofdlettergevoelig bij het matchen van regels in een bestand. Gebruik de om het hoofdlettergebruik te negeren -l optie met het commando.

uniq -i duplicate.txt

U ziet de volgende uitvoer.

Merk op in de uitvoer hierboven, uniq gaf de regels niet weer VANG DIT en DIT IS EEN TEKSTBESTAND .

Uitvoer naar een bestand verzenden

Om de uitvoer van het uniq-commando naar een bestand te sturen, kunt u de Uitvoeromleiding ( > ) teken als volgt:

uniq -i duplicate.txt > otherfile.txt

Tijdens het verzenden van een uitvoer naar een tekstbestand, geeft het systeem de uitvoer van de opdracht niet weer. U kunt de inhoud van het nieuwe bestand controleren met de kat opdracht.

cat otherfile.txt

U kunt ook andere manieren gebruiken om stuur opdrachtregeluitvoer naar een bestand in Linux .

Dubbele gegevens analyseren met uniq

Meestal zult u tijdens het beheren van Linux-servers op de terminal werken of tekstbestanden bewerken. Daarom kan het een grote aanwinst zijn voor uw Linux-vaardigheden om te weten hoe u overbodige kopieën van regels in een tekstbestand kunt verwijderen.

Werken met tekstbestanden kan frustrerend zijn als u niet weet hoe u tekst in een bestand moet filteren en sorteren. Om uw werk gemakkelijker te maken, heeft Linux verschillende tekstbewerkingscommando's zoals: sed en awk waarmee u efficiënt kunt werken met tekstbestanden en opdrachtregeluitvoer.

Deel Deel Tweeten E-mail Deze 10 Sed-voorbeelden maken je een Linux Power User

Wil je een krachtige Linux-gebruiker worden? Aan de slag met sed zal helpen. Leer van deze 10 sed-voorbeelden.

Lees volgende
Gerelateerde onderwerpen
  • Linux
  • Linux
Over de auteur Deepesh Sharma(79 artikelen gepubliceerd)

Deepesh is de Junior Editor voor Linux bij MUO. Hij schrijft informatieve handleidingen over Linux, met als doel een zalige ervaring te bieden aan alle nieuwkomers. Ik weet niet zeker van films, maar als je over technologie wilt praten, is hij jouw man. In zijn vrije tijd kun je hem boeken zien lezen, naar verschillende muziekgenres luisteren of zijn gitaar spelen.

Meer van Deepesh Sharma

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren