Linux (en zijn voorganger, Unix) is gebouwd op platte tekst. Als gevolg hiervan heeft het allerlei handige tekstverwerkingstools die u vanaf de terminal kunt gebruiken. Het Linux uniq-hulpprogramma is ontworpen om u te helpen bij het sorteren van tekstbestanden op unieke waarden.
Wat is Linux uniq en wanneer zou je het gebruiken?
De uniek commando wordt standaard op de meeste Linux-distributies geïnstalleerd en behoort tot het coreutils-pakket. Het wordt gebruikt om regels van aangrenzende, identieke tekst te identificeren en samen te vouwen. Laten we deze definitie een beetje uitpakken.
- De basiseenheid voor vergelijking is een regel tekst, dat wil zeggen dat alle tekst van de ene regel terugkeert naar de volgende. Dit kan meerdere zinnen bevatten, op voorwaarde dat ze in dezelfde alinea staan.
- Uniq vergelijkt standaard alleen aangrenzende lijnen. Dit betekent dat als twee regels precies hetzelfde zijn, maar er een andere tussen staat, ze als verschillend worden beschouwd, tenzij je een aantal andere opties op de opdracht toepast (hierover later meer).
- In deze context betekent “collapsing” dat uniq zijn uitvoer weergeeft, het zal alleen de eerste instantie van de regel bevatten.
Het uniq-commando helpt u door veel gegevens te bladeren, te identificeren welke regels hetzelfde zijn en deze uit de uitvoer te verwijderen.
Basisgebruik van Linux uniq Command
Op een basisniveau is het gebruik van de Linux uniq-opdracht als volgt: uniq -o=value /path/to/inputfile
class=”ql-syntax”> Hier vertegenwoordigt de “o” hierboven de steno-vlag voor een van zijn opties. U kunt dit ook in zijn langere vorm invoeren, zoals: uniq –option=value /path/to/inputfile
class=”ql-syntax”> Het “invoerbestand” moet een tekstbestand zijn dat uw gegevens bevat. Er zijn veel opties voor het uniqu-commando in Linux, maar het is misschien niet duidelijk hoe je dat kunt gebruik maken van deze opties om u nuttige uitvoer te bieden. In de onderstaande secties gaan we dieper in op enkele ervan.
Aangrenzende duplicaten verwijderen met het uniq-commando
In zijn meest eenvoudige vorm zal het uniq-commando aangrenzende duplicaten ‘samenvouwen’ en de resultaten weergeven. Stel dat u bijvoorbeeld een nieuwe blog begint en een lijst heeft met mensen die zich hebben aangemeld voor uw e-mailnieuwsbrief (newsletter.txt), maar nog geen lid zijn. [email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Omdat je deze mensen niet meer dan één keer lastig wilt vallen, kun je dit ontdubbelen met het volgende: $ uniq newsletter.txt
[email protected]
[email protected]
[email protected]
Toegegeven, dit is op zich niet erg spannend. Als een derde exemplaar van “[email protected]” aan het einde van het bestand zou bestaan, zou het blijven. Het is dus belangrijk om enkele van de opties voor deze opdracht te leren.
Het aantal voorvallen tellen met uniq
Stel dat uw blog een succes wordt en dat niet alleen mensen zich registreren, ze abonneren zich ook! Voor geld! En waarom zouden ze niet? De lijst met betalingen die u ontvangt, begint te groeien. Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Peters Aaron [email protected] $10.00
Peters Aaron [email protected] $10.00
Peters Aaron [email protected] $10.00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Jones Mary [email protected] $5,00
Jones Mary [email protected] $5,00
Jones Mary [email protected] $5,00
Jones Mary [email protected] $5,00
Jones Fred [email protected] $4.00
Jones Fred [email protected] $4.00
Jones Fred [email protected] $4.00
Jones Fred [email protected] $4.00
Jones Fred [email protected] $4.00
Op een gegeven moment wil je de balans opmaken van hoe lang sommige van je abonnees al bij je zijn. Gezien de bovenstaande lijst van hun betalingen tot nu toe, kunt u: uniek tel het aantal keren met de -C vlag: $ uniq -c payments.txt
8 Smith John [email protected] $ 3,00
3 Peters Aaron [email protected] $10.00
6 Miller Tim [email protected] $ 1,00
4 Jones Mary [email protected] $5,00
5 Jones Fred [email protected] $4.00
Dit is echter weer afhankelijk van de aangrenzende regels… als er regels waren die dat niet waren, zouden er duplicaten zijn in de uitvoer van het programma dat is ontworpen om te dedupliceren! Om deze reden, uniek is het handigst bij gebruik in combinatie met de soort opdracht.
Unieke regels weergeven met sorteer- en uniq-opdrachten
Het sorteercommando helpt ons hier omdat het dubbele regels zal rangschikken zodat ze zijn aangrenzend, waardoor uniek om ze eruit te filteren. Stel je bijvoorbeeld voor dat het bovenstaande betalingsrapport niet netjes geordend is: Smith John [email protected] $ 3,00
Jones Fred [email protected] $4.00
Miller Tim [email protected] $ 1,00
Peters Aaron [email protected] $10.00
Jones Mary [email protected] $5,00
Peters Aaron [email protected] $10.00
Miller Tim [email protected] $ 1,00
Jones Fred [email protected] $4.00
Smith John [email protected] $ 3,00
Jones Fred [email protected] $4.00
Peters Aaron [email protected] $10.00
Jones Fred [email protected] $4.00
Jones Fred [email protected] $4.00
Miller Tim [email protected] $ 1,00
Jones Mary [email protected] $5,00
Smith John [email protected] $ 3,00
Miller Tim [email protected] $ 1,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Smith John [email protected] $ 3,00
Jones Mary [email protected] $5,00
Jones Mary [email protected] $5,00
Miller Tim [email protected] $ 1,00
Miller Tim [email protected] $ 1,00
Smith John [email protected] $ 3,00
In dit geval wilt u deze lijst eerst doorlopen soort om alle gelijkaardige items te groeperen, voer dan uit uniek. Dit maakt gebruik van de pijp operator op de opdrachtregel (“|”), waar de resultaten van de opdracht vóór de pipe rechtstreeks in de tweede opdracht worden ingevoerd. Dus als we dit uitvoeren op onze verwisselde betalingen, krijgen we de unieke resultaten (met hun telling): $ sort payments-rand.txt | uniq -c
5 Jones Fred [email protected] $4.00
4 Jones Mary [email protected] $5,00
6 Miller Tim [email protected] $ 1,00
3 Peters Aaron [email protected] $10.00
8 Smith John [email protected] $ 3,00
Gebruik de uniq-opdracht voor snelle gegevensanalyse
Naarmate je meer vertrouwd raakt met de Linux-opdrachtregel, zul je talloze handige programma’s vinden, zoals uniq. Natuurlijk, je zou het bovenstaande in Excel kunnen openen en op die manier kunnen sorteren, maar dan zou je geen technische credits gaan verdienen, toch?