logo

cut-opdracht in Linux met voorbeelden

Het cut-commando in Linux is een commando voor het uitknippen van de secties van elke regel bestanden en het schrijven van het resultaat naar standaarduitvoer. Het kan worden gebruikt om delen van een regel te knippen op bytepositie, teken en veld. Het commando Knippen snijdt een regel af en extraheert de tekst. Het is noodzakelijk om een ​​optie op te geven met een commando, anders geeft het een foutmelding. Als er meer dan één bestandsnaam wordt opgegeven, worden de gegevens van elk bestand niet voorafgegaan door de bestandsnaam.

Inhoudsopgave



Syntaxis van snijopdracht

De basissyntaxis van decut>opdracht luidt:

cut OPTION... [FILE]...>

Waar

`OPTION`> specificeert het gewenste gedrag



` FILE> `>vertegenwoordigt het invoerbestand.

Opmerking : AlsFILE>is niet gespecificeerd, ` cut`> leest van standaardinvoer (stdin).

Opties Beschikbaar in Cut Command

Hier is een lijst met de meest gebruikte opties met de ` cut`> commando:



Keuze

Beschrijving

-b, –bytes=LIJST

Selecteert alleen de bytes die zijn opgegeven inLIST>(bijv.-b 1-3,7>).

-c, –characters=LIJST

Selecteert alleen de tekens die zijn opgegeven inLIST>(bijv.-c 1-3,7>).

-d, –delimiter=DELEN

ToepassingenDELIM>als veldscheidingsteken in plaats van het tabteken.

-f, –velden=LIS

Selecteert alleen de velden die zijn opgegeven inLIST>, gescheiden door het scheidingsteken (standaard is tab).

-N

Splits geen multi-bytetekens (geen effect tenzij-b>of-c>is gespecificeerd).

-aanvulling

Keer de selectie van velden/tekens om. Druk de velden/tekens af die niet zijn geselecteerd.

Praktische voorbeelden van snijcommando

Laten we twee bestanden met een naam bekijken staat.txt En hoofdletter.txt bevat 5 namen van respectievelijk de Indiase staten en hoofdsteden.

$ cat state.txt Andhra Pradesh Arunachal Pradesh Assam Bihar Chhattisgarh>

Als er geen optie is opgegeven, wordt er een fout weergegeven.

  $ cut state.txt   cut: you must specify a list of bytes, characters, or fields Try 'cut --help' for more information.>

Specifieke bytes extraheren (-b>) Snijopdracht gebruiken

-b(byte): Om de specifieke bytes te extraheren, moet je de optie -b volgen met de lijst met bytenummers gescheiden door komma's. Het bereik van bytes kan ook worden opgegeven met behulp van het koppelteken (-). Het is noodzakelijk om een ​​lijst met bytenummers op te geven, anders geeft dit een fout.

Tabbladen en backspaces worden behandeld als een teken van 1 byte.

Lijst zonder bereiken :

cut -b 1,2,3 state.txt>
lijst zonder bereik

lijst zonder bereik

Lijst met bereiken:

cut -b 1-3,5-7 state.txt>
lijst met bereik

lijst met bereik

Het gebruikt een speciaal formulier voor het selecteren van bytes van het begin tot het einde van de regel:

Speciale vorm: bytes selecteren van begin tot einde van de regel

Hierin geeft 1- aan van de eerste byte tot de eindbyte van een regel

cut -b 1- state.txt>
speciale vorm

speciaal formulier met -b optie

Hierin geeft -3 aan van de eerste byte tot de derde byte van een regel

cut -b -3 state.txt>
speciale vorm

speciale vorm -b optie

Gesneden op karakter (-c>) Snijopdracht gebruiken

-c (kolom): Gebruik de optie -c om op teken te knippen. Hiermee worden de tekens geselecteerd die aan de optie -c worden gegeven. Dit kan een lijst met getallen zijn, gescheiden door komma's, of een reeks getallen gescheiden door een koppelteken (-).

Tabbladen en backspaces worden behandeld als een personage. Het is noodzakelijk om een ​​lijst met tekennummers op te geven, anders geeft deze optie een fout.

Syntaxis:

cut -c [(k)-(n)/(k),(n)/(n)] filename>

Hier, k geeft de startpositie van het personage aan en N geeft de eindpositie van het teken op elke regel aan, if k En N worden gescheiden door - anders zijn ze alleen de positie van het teken op elke regel uit het bestand dat als invoer wordt gebruikt.

Specifieke tekens extraheren:

cut -c 2,5,7 state.txt>
Extraheer specifieke tekens

Extraheer specifieke tekens

Bovenstaande opdracht voor knippen drukt het tweede, vijfde en zevende teken van elke regel van het bestand af.

Extraheer de eerste zeven tekens:

cut -c 1-7 state.txt>
Extraheer de eerste zeven tekens

Extraheer de eerste zeven tekens

Bovenstaande opdracht voor knippen drukt de eerste zeven tekens van elke regel uit het bestand af. Cut gebruikt een speciaal formulier voor het selecteren van tekens van het begin tot het einde van de regel:

Speciaal formulier: tekens selecteren van het begin tot het einde van de regel

cut -c 1- state.txt>
tekens selecteren van het begin tot het einde van de regel

het selecteren van tekens van het begin tot het einde van de regel met de optie -c

Bovenstaande opdracht wordt afgedrukt vanaf het eerste teken tot het einde. Hierbij wordt in commando alleen de startpositie opgegeven en de eindpositie weggelaten.

cut -c -5 state.txt>
het selecteren van tekens van het begin tot het einde van de regel met de optie -c

het selecteren van tekens van het begin tot het einde van de regel met de optie -c

Bovenstaande opdracht drukt de startpositie af tot het vijfde teken. Hierbij wordt de startpositie weggelaten en de eindpositie gespecificeerd.

Gesneden per veld (-f>) Snijopdracht gebruiken

-f (veld): -c optie is handig voor lijnen met een vaste lengte. De meeste Unix-bestanden hebben geen regels met een vaste lengte. Om de nuttige informatie te extraheren, moet u in velden snijden in plaats van in kolommen. De lijst met het opgegeven veldnummer moet worden gescheiden door een komma. Bereiken worden niet beschreven met de optie -f . snee toepassingen tabblad als standaard veldscheidingsteken, maar kan ook met een ander scheidingsteken werken door gebruik te maken van -D keuze.

Opmerking: Spatie wordt in UNIX niet als scheidingsteken beschouwd.

Syntaxis:

cut -d 'delimiter' -f (field number) file.txt>

Extraheer het eerste veld:

Zoals in het bestand staat.txt velden worden gescheiden door een spatie. Als de optie -d niet wordt gebruikt, wordt de hele regel afgedrukt:

cut -f 1 state.txt>
Extraheer het eerste veld met de optie -f

Extraheer het eerste veld met de optie -f

Als ' -d` optie wordt gebruikt, beschouwt deze de spatie als veldscheidingsteken of scheidingsteken:

cut -d ' ' -f 1 state.txt>
spatie als veldscheidingsteken of scheidingsteken

spatie als veldscheidingsteken of scheidingsteken

Velden 1 t/m 4 extraheren:

De opdracht drukt het veld af van de eerste tot de vierde van elke regel uit het bestand.

cut -d ' ' -f 1-4 state.txt>

Commando drukt veld af van eerste naar vierde

Commando drukt veld af van eerste naar vierde

Complementuitvoer (--complement>) Snijopdracht gebruiken

-aanvulling: Zoals de naam al doet vermoeden, vormt het een aanvulling op de output. Deze optie kan worden gebruikt in combinatie met andere opties -F of met -C .

cut --complement -d ' ' -f 1 state.txt>
--aanvulling

-aanvulling

cut --complement -c 5 state.txt>

--aanvulling

-aanvulling

Uitvoerscheidingsteken (--output-delimiter>) Snijopdracht gebruiken

–uitvoerscheidingsteken: Standaard is het uitvoerscheidingsteken hetzelfde als het invoerscheidingsteken dat we in de snede opgeven -D keuze. Gebruik de optie om het uitvoerscheidingsteken te wijzigen –uitvoerscheidingsteken=scheidingsteken .

cut -d ' ' -f 1,2 state.txt --output-delimiter='%'>

16-02-2024_13-18

Hier knipt u de opdrachtwijzigingen delimiter(%) in de standaarduitvoer tussen de velden die zijn opgegeven met de optie -f.

Weergaveversie (--version>) Snijopdracht gebruiken

-versie: Deze optie wordt gebruikt om de versie van Cut weer te geven die momenteel op uw systeem draait.

cut --version>

versie van het snijcommando weergeven

versie van het snijcommando weergeven

Hoe staart met pijpen(|) te gebruiken in Cut Command

Het cut-commando kan worden gecombineerd met vele andere commando's van Unix. In het volgende voorbeeld wordt de uitvoer van de kat commando wordt gegeven als invoer voor de snee commando met -F optie om de statusnamen afkomstig uit het bestand state.txt in de omgekeerde volgorde te sorteren.

cat state.txt | cut -d ' ' -f 1 | sort -r>
met behulp van staart met pijp (|) in het snijcommando

met behulp van staart met pijp (|) in het snijcommando

Het kan ook worden voorzien van een of meer filters voor aanvullende verwerking. Net als in het volgende voorbeeld gebruiken we de commando's cat, head en cut en waarvan de uitvoer wordt opgeslagen in de bestandsnaam list.txt met behulp van richtlijn(>).

cat state.txt | head -n 3 | cut -d ' ' -f 1>lijst.txt>
cat list.txt>

uitvoer naar een ander bestand omleiden

aanwijzingen in c

uitvoer naar een ander bestand omleiden

Veelgestelde vragen over Cut Command in Linux – Veelgestelde vragen

Hoe gebruik ik de cut> commando om specifieke kolommen uit een bestand te extraheren?

Voorbeeld: Om de eerste en derde kolom te extraheren uit een CSV-bestand met de naam ` data.csv`> .

cut -d',' -f1,3 data.csv>

Kan ik gebruiken cut> om uit elke regel een reeks tekens te halen?

Ja, dat kan. Om de tekens 5 tot en met 10 uit elke regel van een bestand met de naam te extraherentext.txt>.

cut -c5-10 text.txt>

Hoe kan ik het scheidingsteken wijzigen dat wordt gebruikt door de cut> commando?

Gebruik de ' -d`> optie gevolgd door het scheidingsteken. Als u bijvoorbeeld een dubbele punt (:>) als scheidingsteken.

cut -d':' -f1,3 data.txt>

Is het mogelijk om te gebruiken cut> velden extraheren op basis van tekenpositie?

Ja, u kunt tekenposities opgeven met de ` -c`> keuze. Om bijvoorbeeld de tekens 1 tot en met 5 en 10 tot en met 15 uit elke regel te extraheren.

cut -c1-5,10-15 data.txt>

Hoe gebruik ik cut> velden extraheren op basis van een specifiek scheidingsteken en deze opslaan in een nieuw bestand?

Om velden, gescheiden door komma's, uit te pakken en op te slaan in een nieuw bestand met de naam ` output.tx> t`>

cut -d',' -f1,3 data.csv>uitvoer.txt>

Conclusie

In dit artikel bespraken we de ` cut`> commando in Linux, een veelzijdig hulpmiddel voor het extraheren van specifieke secties uit bestanden op basis van bytepositie, teken of veld. Het snijdt tekstregels in stukken en voert de geëxtraheerde gegevens uit. Er is geen optie opgegeven bij decut>opdracht resulteert in een fout. Er kunnen meerdere bestanden worden verwerkt, maar de uitvoer bevat niet de bestandsnamen. Opties zoals ` -b`> , ` -c`> , en ` -f`> sta extractie per byte, teken en veld toe. De--complement>optie keert de selectie om, drukt af wat niet is geselecteerd, en--output-delimiter>verandert het uitvoerscheidingsteken. Het commando bevat ook opties voor versieweergave en kan in combinatie met andere commando's via pipelines worden gebruikt voor extra verwerking.

?list=PLqM7alHXFySFc4KtwEZTANgmyJm3NqS_L