Android

Linux snijd commando met voorbeelden

Cut Command in Linux

Cut Command in Linux

Inhoudsopgave:

Anonim

Er zijn veel hulpprogramma's beschikbaar in Linux- en Unix-systemen waarmee u tekstbestanden kunt verwerken en filteren. Knippen is een opdrachtregelhulpprogramma waarmee u delen van lijnen uit gespecificeerde bestanden of piped-gegevens kunt knippen en het resultaat afdrukken naar standaarduitvoer. Het kan worden gebruikt om delen van een lijn te knippen op scheidingsteken, bytepositie en karakter.

In deze zelfstudie laten we u zien hoe u het Linux-knipcommando kunt gebruiken door praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende knipopties.

Het commando Snijden gebruiken

De syntaxis voor de opdracht cut is als volgt:

cut OPTION……

Wanneer u de opdracht cut gebruikt, moet u slechts één van de volgende opties gebruiken:

  • -f ( --fields=LIST ) - Selecteer door een veld, een set velden of een reeks velden op te geven. Dit is de meest gebruikte optie. -b ( --bytes=LIST ) - Selecteer door een byte, een set bytes of een bereik van bytes op te geven. -c (- --characters=LIST ) - Selecteer door een teken, een set tekens of een reeks tekens op te geven.

Andere opties zijn:

  • -d ( --delimiter ) - Geef een scheidingsteken op dat zal worden gebruikt in plaats van het standaard “TAB” scheidingsteken. --complement - --complement de selectie aan. Wanneer u deze optie gebruikt, worden alle bytes, tekens of velden weergegeven behalve de geselecteerde. -s (- alleen --only-delimited ) - Standaard zal knippen elke regel afdrukken die geen scheidingsteken bevat. Wanneer u deze optie gebruikt, worden er geen lijnen afgedrukt zonder scheidingstekens. --output-delimiter - De standaardinstelling is het gebruik van het input-scheidingsteken als het output-scheidingsteken. Met deze optie kunt u een andere uitvoerscheidingstekenreeks opgeven.

Het snijcommando kan nul of meer invoerbestandsnamen accepteren. Als er geen BESTAND is opgegeven, of wanneer BESTAND - , zal cut de standaardinvoer lezen.

Het argument LIJST dat wordt doorgegeven aan de opties -f , -b en -c kan een geheel getal zijn, meerdere gehele getallen gescheiden door komma's, een bereik van geheel getal of meerdere gehele getallen gescheiden door komma's. Elk bereik kan een van de volgende zijn:

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

Snijden op veld

Cut-opdracht wordt meestal gebruikt om geselecteerde velden van elke regel met bestanden of de standaardinvoer weer te geven. Wanneer niet opgegeven, is het standaardscheidingsteken "TAB".

In de onderstaande voorbeelden gebruiken we het volgende bestand. Alle velden worden gescheiden door tabbladen.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

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

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

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

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Hoe te snijden op basis van een scheidingsteken

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

Als u bijvoorbeeld het eerste en derde veld wilt weergeven met ":" als scheidingsteken, typt u:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

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

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

Hoe de selectie aan te vullen

Gebruik als aanvulling op de lijst met --complement optie --complement . Hiermee worden alleen die velden afgedrukt die niet zijn geselecteerd met de optie -f .

De volgende opdracht drukt alle velden af ​​behalve de 1e en 3e:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Hoe een output-scheidingsteken op te geven

Gebruik de optie --output-delimiter om het uitvoerscheidingsteken op te geven. Als u bijvoorbeeld het uitvoerscheidingsteken wilt instellen op _ u:

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

Hoe bytes en karakters te knippen

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

Eén byte is 8 bits en kan 256 verschillende waarden vertegenwoordigen. Toen de ASCII-standaard werd vastgesteld, hield deze rekening met alle letters, cijfers en symbolen die nodig zijn om met Engels te werken. De ASCII-tekentabel heeft 128 tekens en elk teken wordt vertegenwoordigd door één byte. Toen computers wereldwijd populair werden, begonnen technologiebedrijven nieuwe karaktercoderingen te introduceren voor verschillende talen en voor talen met meer dan 256 tekens, een eenvoudige 1 op 1 mapping was 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.

In de volgende voorbeelden gebruiken we het ü teken dat 2 bytes nodig heeft.

Gebruik de optie -b ( --bytes ) om een ​​deel van een lijn uit te snijden door een --bytes op te geven.

Selecteer de 5e byte:

echo 'drüberspringen' | cut -b 5

b

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

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Selecteer het bereik van 1e tot 5e byte:

echo 'drüberspringen' | cut -b 1-5

drüb

Op het moment dat dit artikel werd geschreven, heeft de versie van knippen gebundeld in GNU coreutils geen optie om te knippen door tekens. Bij gebruik van de optie -c gedraagt ​​cut zich hetzelfde als bij gebruik van de optie -b .

Snijd voorbeelden

Het snijcommando wordt meestal gebruikt in combinatie met andere commando's via leidingen. Hier zijn enkele voorbeelden.

Krijg een lijst van alle gebruikers

De uitvoer van het getent passwd commando wordt doorgegeven om te cut waardoor het eerste bestand wordt afgedrukt met : als scheidingsteken.

getent passwd | cut -d ':' -f1

Bekijk 10 meestgebruikte opdrachten

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

history | cut -c8- | sort | uniq -c | sort -rn | head

Conclusie

U zou nu een goed begrip moeten hebben van het gebruik van het Linux cut commando. Hoewel erg handig, heeft het commando knippen enkele beperkingen. Het biedt geen ondersteuning voor het opgeven van meer dan één tekens als scheidingsteken en ondersteunt geen meerdere decimeters.

gesneden terminal