Cut Command in Linux

Er zijn veel hulpprogrammas beschikbaar in Linux- en Unix-systemen waarmee je tekstbestanden kunt verwerken en filteren. cut is een opdrachtregelprogramma waarmee u delen van regels uit gespecificeerde bestanden of doorgesluisde gegevens kunt knippen en het resultaat kunt afdrukken naar standaarduitvoer. Het kan worden gebruikt om delen van een regel op scheidingsteken, bytepositie en teken te knippen.

In dit artikel laten we u zien hoe u de cut commando door praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende opties.

Hoe de cut Command # te gebruiken

De syntaxis voor de cut commando is als volgt:

De opties die cut vertellen of ze moeten gebruiken een scheidingsteken, bytepositie of teken bij het uitsnijden van geselecteerde delen, de regels zijn als volgt:

U kunt slechts één van de bovenstaande opties gebruiken.

Andere opties zijn :

  • -d (--delimiter) – Specificeer een scheidingsteken dat zal worden gebruikt in plaats van de standaard ” TAB “scheidingsteken.
  • --complement – Vul de selectie aan. Wanneer u deze optie gebruikt, geeft cut alle bytes, tekens, of velden behalve de se gegeven.
  • -s (--only-delimited) – Standaard cut drukt de regels af die geen scheidingsteken bevatten. Wanneer deze optie wordt gebruikt, drukt cut geen regels af die geen scheidingstekens bevatten.
  • --output-delimiter – Het standaardgedrag van cut is om het invoerscheidingsteken te gebruiken als het uitvoerscheidingsteken. Met deze optie kunt u een andere tekenreeks voor het scheidingsteken opgeven voor de uitvoer.

Het cut -commando kan nul of meer bestandsnamen voor invoer accepteren. Als er geen FILE is opgegeven, of wanneer FILE - is, cut leest van de standaardinvoer.

Het LIST -argument doorgegeven aan het -f , -b en -c opties kunnen een geheel getal zijn, meerdere gehele getallen gescheiden door kommas, een reeks gehele getallen of meerdere gehele getallen gescheiden door kommas . Elk bereik kan een van de volgende zijn:

  • N het N-de veld, byte of teken, beginnend bij 1.
  • N- vanaf het N-de veld, byte of teken, tot het einde van de regel.
  • N-M vanaf de N-de naar het Mth-veld, byte of teken.
  • -M van het eerste tot het Mth-veld, byte of teken.

Hoe te knippen op veld #

Om de velden te specificeren die moeten worden geknipt, roept u het commando op met de -f optie. Indien niet gespecificeerd, is het standaard scheidingsteken “TAB”.

In de onderstaande voorbeelden zullen we het volgende bestand gebruiken. De velden worden gescheiden door tabs.

test.txt

Om bijvoorbeeld het eerste en derde veld weer te geven, gebruikt u:

Of als u wilt weergeven van het 1e tot het 4e veld:

Hoe te knippen op basis van een scheidingsteken #

Om te knippen op basis van een scheidingsteken, roept u de opdracht op met de -d optie, gevolgd door het scheidingsteken dat u wilt gebruiken.

Als u bijvoorbeeld de 1e en 3e velden wilt weergeven met “:” als scheidingsteken, typt u:

U kunt elk willekeurig teken als scheidingsteken gebruiken. In het volgende voorbeeld gebruiken we de spatie als scheidingsteken en drukken we het 2e veld af:

Hoe de selectie aanvullen #

Gebruik de optie --complement om de lijst met keuzevelden aan te vullen. Hiermee worden alleen die velden afgedrukt die niet zijn geselecteerd met de optie -f.

Met het volgende commando worden alle velden afgedrukt, behalve de 1e en 3e:

Hoe een uitvoerscheidingsteken specificeren #

Gebruik het --output-delimiter optie. Om het uitvoerscheidingsteken bijvoorbeeld in te stellen op _, gebruikt u:

Hoe door bytes en tekens te knippen #

Laten we, voordat we verder gaan, een onderscheid maken tussen bytes en tekens.

Een byte is 8 bits en kan 256 verschillende waarden. Toen de ASCII-standaard werd vastgesteld, hield deze rekening met alle letters, cijfers en symbolen die nodig zijn om met het Engels te werken. De ASCII-tekentabel heeft 128 tekens en elk teken wordt vertegenwoordigd door één byte.Toen computers wereldwijd toegankelijk begonnen te worden, begonnen technologiebedrijven nieuwe tekencoderingen voor verschillende talen te introduceren. Voor talen met meer dan 256 karakters was een simpele 1 op 1 mapping niet mogelijk. Dit leidt tot verschillende problemen, zoals het delen van documenten of browsen op websites, en er was een nieuwe Unicode-standaard nodig die de meeste schrijfsystemen ter wereld aankan. UTF-8 is gemaakt om deze problemen op te lossen. In UTF-8 worden niet alle tekens weergegeven met 1 byte. Tekens kunnen worden weergegeven met 1 byte tot 4 bytes.

De optie -b (--bytes) vertelt het commando om snijd secties van elke regel gespecificeerd door gegeven byteposities.

In de volgende voorbeelden gebruiken we het ü teken dat 2 bytes in beslag neemt.

Selecteer de 5e byte:

Selecteer de 5e, 9e en 13e bytes:

Selecteer het bereik van 1e tot 5e byte:

Op het moment van schrijven van dit artikel heeft de versie van cut gebundeld in GNU coreutils geen een optie om te knippen door karakters. Bij gebruik van de -c optie, gedraagt cut zich hetzelfde als wanneer je de -b optie gebruikt.

Voorbeelden knippen #

Het cut commando wordt gewoonlijk gebruikt in combinatie met andere commandos via piping. Hier zijn een paar voorbeelden:

Krijg een lijst van alle gebruikers #

De uitvoer van het getent passwd commando wordt doorgegeven aan cut, dat het eerste veld afdrukt met : als scheidingsteken.

De uitvoer toont een lijst van alle systeemgebruikers.

Bekijk 10 meest gebruikte commandos #

In het volgende voorbeeld wordt cut gebruikt om de eerste 8 bytes van elke regel van de history opdrachtuitvoer te verwijderen.

Conclusie #

cut commando wordt gebruikt om geselecteerde velden van elke regel met gegeven bestanden of de standaardinvoer weer te geven.

Hoewel erg handig, cut heeft enkele beperkingen. Het ondersteunt niet het specificeren van meer dan één teken als scheidingsteken en het ondersteunt niet meerdere scheidingstekens.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *