Op Linux gebaseerde besturingssystemen bieden veel hulpprogramma's voor tekstverwerking via de opdrachtregel die u in uw dagelijkse routine kunt gebruiken. De cut-opdracht is zo'n hulpprogramma voor tekstmanipulatie dat scheidingstekens, bytes, velden en kolommen gebruikt om een ​​vereiste tekenreeks op te halen uit een platte database of een regel.

Aangezien een platte database geen structurele relatie heeft en de records worden gescheiden met behulp van scheidingstekens, is cut een ideaal hulpmiddel om tekens of bytes aan informatie te extraheren. Dit artikel bespreekt de cut-opdracht in detail en demonstreert enkele praktische voorbeelden met verschillende filteropties om u op weg te helpen met de tool.

Overzicht van het snijcommando

cut gebruikt de volgende basissyntaxis:

snee 

Je kunt het ook als volgt met andere commando's pipen:

echo "string_of_characters" | snee 

Houd er rekening mee dat het ontbreken van een optie een fout genereert. Hier zijn enkele vlaggen die u met knippen kunt gebruiken om de verschillende functies aan te roepen:

instagram viewer
Optie Beschrijving
-B Knipt op bytepositie
-C Knipt op karakterpositie
-D Extraheert string met behulp van het scheidingsteken gespecificeerd met (-f) veldoptie
-F Extracten door een gespecificeerd veld
-s Uittreksels voor alleen scheidingstekens
--aanvulling Druk de uitvoer af, behalve het veld dat u hebt opgegeven
--uitgangsscheidingsteken Vervang het bestaande scheidingsteken door het scheidingsteken dat u hebt opgegeven

Hier zijn enkele voorbeelden van de cut-opdracht die u zullen helpen een beter begrip te krijgen van de tool en zijn functies.

1. Specifieke karakters uit een string extraheren

Gebruik de -B optie om tekenreeksen op te halen op basis van hun aantal bytes, als volgt:

echo "Hallo wereld" | knippen -b 1,2,3,5,8,9

Uitgang:

Heloor

U kunt ook een bestandspad opgeven in plaats van een tekenreeks:

knippen -b 1,2,3,4,5 bestandsnaam.txt

Of u kunt tekens extraheren volgens hun positie in de tekst. Gebruik de -C optie gevolgd door de volgorde/volgorde van tekens die u als volgt moet ophalen:

echo "Hallo wereld" | knippen -c 1,2,3,5,6,8,10,11

Uitgang:

hallo oud

Op dezelfde manier, om velden of kolommen uit een platte database op te halen, gebruikt u het cut-commando met de -F vlag optie:

knippen -f 3 database.txt

2. Knip het bereik van bytes of tekens af

U kunt ook de -B markeer met de opdracht cut om als volgt meerdere reeksen bytes te extraheren en af ​​te drukken:

knippen -b 1-7,16-23 database.txt

U kunt het bereik definiëren om tekens op te halen met behulp van de -C als volgt markeren:

knippen -c 1-7,16-23 database.txt

3. Tekst extraheren vanaf begin- of eindposities

Gebruik de -cn- optie om tekst te extraheren vanaf het n-de teken tot aan het einde van de regel, waarbij: N is de index van een teken in de string.

Om bijvoorbeeld de tekenreeks te extraheren vanaf het zesde teken tot het einde van de regel:

knip -c6- database.txt

Of gebruik de volgende opdracht om van begin tot eind op te halen m tekens uit het bestand:

knippen -c-8 database.txt

4. Knip meerdere velden uit een bestand

U kunt ook meerdere velden uit een bestand afdrukken met de -F vlag.

knippen -f 1,2 database.txt

Uitgang:

NAAM LEEFTIJD 
Jon 20
Lisa 24
Jack 18
Bruce 23
Nancy 19

5. Tekst extraheren met scheidingstekens

U kunt de -D vlag om het scheidingsteken op te geven met de -F optie. Het scheidingsteken specificeert het teken dat wordt gebruikt om velden in een tekstbestand te scheiden.

Om bijvoorbeeld de eerste kolom van de. te extraheren /etc/passwd bestand, gebruik dan een dubbele punt (:) als scheidingsteken:

knip -d ‘:’ -f 1 /etc/passwd

Evenzo is de waarde van het scheidingsteken in de gegeven tekststroom een ​​enkele spatie:

echo "De 1% van de 1%" | knippen -d ' ' -f 2,3

Uitgang:

1% van

6. Wijzig uitgangsscheidingsteken voor weergave

De --uitgangsscheidingsteken flag voegt flexibiliteit toe aan de uitvoer van de cut-opdracht. U kunt bijvoorbeeld de vlag gebruiken om de uitvoer in een aparte regel weer te geven met behulp van de $’\n’ (newline) waarde, als volgt:

grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'\⁠n'

Uitgang:

alice
Alice
/bin/sh

Bovendien kunt u ook een scheidingsteken van een invoerbestand vervangen door het scheidingsteken van uw keuze in de uitvoer met behulp van de --uitgangsscheidingsteken vlag:

grep root /etc/passwd | knippen -d ':' -f 1,6,7 --output-delimiter=@

Uitgang:

root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin

7. Alleen velden knippen als een regel het scheidingsteken bevat

Gebruik de -s vlag om velden alleen te extraheren als de regels een scheidingsteken bevatten. Het volgende commando zal bijvoorbeeld het veld niet ophalen: -f 1 tenzij het een spatiescheidingsteken heeft:

echo "Hallo Wereld" | knippen -d " " -f 1 -s

Integendeel, de onderstaande opdracht genereert een uitvoer omdat de tekenreeks het opgegeven scheidingsteken bevat:

echo "Hallo wereld" | knippen -d " " -f 1 -s

Uitgang:

Hallo

Op dezelfde manier kunt u ook elk ander teken als scheidingsteken gebruiken:

echo "Hallo: Wereld" | knippen -d ":" -f 2 -s

Uitgang:

Wereld

8. Complementeer de opdrachtuitvoer

Met het snijhulpprogramma kunt u ook alle velden afdrukken, behalve het opgegeven veld. Gebruik de --aanvulling optie als volgt om alle details van het root-gebruikersaccount op te halen, behalve de vijfde kolom:

grep "root" /etc/passwd | knippen -d ':' --complement -s -f 5

Uitgang:

root: x: 0:0:/root:/bin/bash

Evenzo, in het onderstaande voorbeeld, de -f 1 parameter moet worden weergegeven: Hallo tekst echter, vanwege de --aanvulling optie, drukt het alleen de rest af.

echo "Hallo aan de hele wereld" | knippen -d " " -f 1 --complement

Uitgang:

aan de hele wereld

Het beste is dat je het cut-commando kunt combineren met de standaarduitvoer van andere Linux/Unix-commando's.

sed is zo'n tekstbewerkingstool die u kunt gebruiken om uw tekst te verwijderen, in te voegen en te vervangen. U kunt de uitvoer eenvoudig naar het cut-commando sturen.

In het onderstaande voorbeeld het grep-commando uitvoer wordt doorgesluisd naar het hulpprogramma sed dat dubbele punt (:) vervangt door een koppelteken (-) en vervolgens geeft cut de velden 1, 6 en 7 als volgt weer:

grep alice /etc/passwd | sed 's/:/-/g' | knippen -d ' ' -f 1,5,7

Uitgang:

alice-x-1005-1008-Alice-/home/new/alice-/bin/sh

Werken met tekst op Linux Cut gebruiken

De cut-opdracht is een flexibel en efficiënt opdrachtregelprogramma dat u in verschillende gevallen van tekstmanipulatie kunt gebruiken. Het gebruikt bewerkingen om tekst uit bestanden of standaard invoergegevens te filteren. Het hulpprogramma heeft ook het voordeel dat gebruikers de tekst die ze willen weergeven, kunnen beperken en naar eigen keuze scheidingstekens kunnen toevoegen.

Deze opdracht heeft echter ook enkele beperkingen. U kunt geen reguliere expressies gebruiken om een ​​scheidingsteken op te geven of gelijktijdige opties voor meerdere knippen gebruiken. Dit artikel heeft praktische voorbeelden van basis- tot hoger niveau van dit hulpprogramma behandeld om beginners te helpen met een duidelijk begrip van tekstmanipulatiecommando's op Linux.

De 5 meest bruikbare Linux-tekstmanipulatiecommando's

Wil je je Linux-game verbeteren en meer leren over tekstmanipulatie? Hier zijn de top vijf Linux-opdrachtregelprogramma's om je reis te beginnen.

Lees volgende

DeelTweetenE-mail
Gerelateerde onderwerpen
  • Linux
  • Linux-opdrachten
  • Linux Elementair
  • Linux Bash Shell
Over de auteur
Rumaisa Niazi (10 artikelen gepubliceerd)

Rumaisa is freelance schrijver bij MUO. Ze heeft veel hoeden gedragen, van wiskundige tot liefhebber van informatiebeveiliging, en werkt nu als SOC-analist. Haar interesses omvatten lezen en schrijven over nieuwe technologieën, Linux-distributies en alles wat met informatiebeveiliging te maken heeft.

Meer van Rumaisa Niazi

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