Linux-baserede operativsystemer tilbyder mange kommandolinjetekstbehandlingsværktøjer, du kan bruge i din daglige rutine. Cut-kommandoen er et sådant tekstmanipulationsværktøj, der bruger afgrænsningstegn, bytes, felter og kolonner til at hente en påkrævet streng fra en fladfil-database eller en linje.

Da en flad-fil-database ikke har et strukturelt forhold, og posterne adskilles ved hjælp af skilletegn, er cut et ideelt værktøj til at udtrække tegn eller bytes af information. Denne artikel diskuterer cut-kommandoen i detaljer og viser nogle praktiske eksempler med forskellige filtermuligheder for at komme i gang med værktøjet.

Oversigt over skærekommandoen

cut bruger følgende grundlæggende syntaks:

skære 

Du kan også overføre det med andre kommandoer som følger:

ekko "streng_af_tegn" | skære 

Bemærk venligst, at fraværet af en valgmulighed genererer en fejl. Her er nogle flag, du kan bruge med cut til at påkalde dens forskellige funktioner:

instagram viewer
Mulighed Beskrivelse
-b Klip efter byte-position
-c Klip efter karakterposition
-d Udtrækker streng ved hjælp af skilletegn angivet med (-f) feltindstilling
-f Udtræk af et specificeret felt
-s Uddrag kun for afgrænsninger
--komplement Udskriv outputtet med undtagelse af det felt, du har angivet
--output-afgrænser Erstat den eksisterende afgrænsning med den, du har angivet

Her er nogle eksempler på cut-kommandoen, der vil hjælpe dig med at få en bedre forståelse af værktøjet og dets funktioner.

1. Udtræk specifikke tegn fra en streng

Brug -b mulighed for at hente strenge af tegn efter deres byteantal, som følger:

ekko "Hej verden" | skære -b 1,2,3,5,8,9

Produktion:

Heloor

Du kan også angive en filsti i stedet for en streng:

klip -b 1,2,3,4,5 filnavn.txt

Eller du kan udtrække tegn i henhold til deres placering i teksten. Brug -c mulighed efterfulgt af rækkefølgen/rækkefølgen af ​​tegn, du skal hente som følger:

ekko "Hej verden" | cut -c 1,2,3,5,6,8,10,11

Produktion:

Hej gamle

Tilsvarende, for at hente felter eller kolonner fra en flad-fil-database, skal du bruge cut-kommandoen med -f flag mulighed:

cut -f 3 database.txt

2. Klip række af bytes eller tegn

Du kan også bruge -b flag med cut-kommandoen for at udtrække og udskrive flere rækker af bytes som følger:

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

Du kan definere rækkevidden for at hente tegn ved hjælp af -c flag som følger:

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

3. Uddrag tekst fra start- eller slutpositioner

Brug -cn- mulighed for at udtrække tekst fra n'te tegn og frem til slutningen af ​​linjen, hvor n er indekset for et tegn i strengen.

For eksempel for at udtrække strengen fra det sjette tegn til slutningen af ​​linjen:

klip -c6- database.txt

Eller brug følgende kommando til at hente fra start til sidst m tegn fra filen:

cut -c-8 database.txt

4. Klip flere felter fra en fil

Du kan også udskrive flere felter fra en fil ved hjælp af -f flag.

cut -f 1,2 database.txt

Produktion:

NAVN ALDER 
Jon 20
Lise 24
Jack 18
Bruce 23
Nancy 19

5. Udtræk tekst ved hjælp af skilletegn

Du kan bruge -d flag for at angive afgrænsningen med -f mulighed. Afgrænsningstegnet angiver det tegn, der bruges til at adskille felter i en tekstfil.

For eksempel at udtrække den første kolonne af /etc/passwd fil, brug et kolon (:) som afgrænsningstegn:

cut -d ':' -f 1 /etc/passwd

På samme måde er afgrænserværdien i den givne tekststrøm et enkelt mellemrum:

ekko "De 1% af de 1%" | skære -d ' ' -f 2,3

Produktion:

1 % af

6. Skift outputafgrænser for visning

Det --output-afgrænser flag tilføjer fleksibilitet til cut-kommando output. For eksempel kan du bruge flaget til at vise outputtet på en separat linje ved hjælp af $'\n' (nylinje) værdi, som følger:

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

Produktion:

alice
Alice
/bin/sh

Desuden kan du også erstatte en afgrænsning af en inputfil med den afgrænsning efter eget valg i outputtet ved at bruge --output-afgrænser flag:

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

Produktion:

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

7. Klip kun felter, når en linje indeholder afgrænsningen

Brug -s flag for kun at udtrække felter, når linjerne indeholder et skilletegn. For eksempel vil følgende kommando ikke hente feltet -f 1 medmindre den har en mellemrumsafgrænser:

ekko "HelloWorld" | skære -d " " -f 1 -s

Tværtimod vil den nedennævnte kommando generere et output, da strengen indeholder den angivne afgrænsning:

ekko "Hej verden" | skære -d " " -f 1 -s

Produktion:

Hej

På samme måde kan du også bruge et hvilket som helst andet tegn som skilletegn:

ekko "Hej: Verden" | cut -d ":" -f 2 -s

Produktion:

Verden

8. Komplementer kommandoudgangen

Cut-værktøjet giver dig også mulighed for at udskrive alle felter undtagen det angivne felt. Brug --komplement mulighed som følger for at hente alle detaljerne for root-brugerkontoen undtagen den femte kolonne:

grep "root" /etc/passwd | cut -d ':' --komplement -s -f 5

Produktion:

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

På samme måde i eksemplet nedenfor -f 1 parameter skal vises Hej tekst dog pga --komplement mulighed, udskriver den kun resten af ​​den.

ekko "Hej til hele verden" | cut -d " " -f 1 --komplement

Produktion:

til hele verden

Det bedste er, at du kan kombinere cut-kommandoen med standardoutputtet fra andre Linux/Unix-kommandoer.

sed er et sådant tekstredigeringsværktøj, du kan bruge til at slette, indsætte og erstatte din tekst. Du kan nemt overføre dets output til cut-kommandoen.

I eksemplet nedenfor, grep kommandoen output sendes til sed-værktøjet, som erstatter kolon (:) med en bindestreg (-), og derefter viser cut felterne 1, 6 og 7 som følger:

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

Produktion:

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

Arbejde med tekst på Linux ved hjælp af cut

Cut-kommandoen er et fleksibelt og effektivt kommandolinjeværktøj, som du kan bruge i forskellige brugstilfælde af tekstmanipulation. Det bruger operationer til at filtrere tekst fra filer eller standard inputdata. Værktøjet har også en fordel, der gør det muligt for brugere at begrænse den tekst, de ønsker at vise, og tilføje afgrænsninger efter eget valg.

Denne kommando har dog også nogle begrænsninger. Du kan ikke bruge regulære udtryk til at angive afgrænsning eller bruge samtidige multiple cut-kommandoer. Denne artikel har dækket grundlæggende til videregående praktiske eksempler på dette værktøj for at hjælpe begyndere med en klar forståelse af tekstmanipulationskommandoer på Linux.

De 5 mest nyttige Linux-tekstmanipulationskommandoer

Vil du forbedre dit Linux-spil og lære mere om tekstmanipulation? Her er de fem bedste Linux-kommandolinjeværktøjer til at begynde din rejse.

Læs Næste

DelTweetE-mail
Relaterede emner
  • Linux
  • Linux kommandoer
  • Elementær Linux
  • Linux Bash Shell
Om forfatteren
Rumaisa Niazi (10 artikler udgivet)

Rumaisa er freelanceskribent på MUO. Hun har båret mange hatte, fra en matematiker til en informationssikkerhedsentusiast, og arbejder nu som SOC-analytiker. Hendes interesser inkluderer at læse og skrive om nye teknologier, Linux-distributioner og alt omkring informationssikkerhed.

Mere fra Rumaisa Niazi

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere