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:
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.
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
- Linux
- Linux kommandoer
- Elementær Linux
- Linux Bash Shell
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.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere