Linux-baserte operativsystemer tilbyr mange kommandolinjetekstbehandlingsverktøy du kan bruke i din daglige rutine. Cut-kommandoen er et slikt tekstmanipuleringsverktøy som bruker skilletegn, byte, felt og kolonner for å hente en nødvendig streng fra en flatfildatabase eller en linje.

Siden en flatfildatabase ikke har et strukturelt forhold og postene er separert ved hjelp av skilletegn, er cut et ideelt verktøy for å trekke ut tegn eller byte med informasjon. Denne artikkelen diskuterer kutt-kommandoen i detalj og viser noen praktiske eksempler med forskjellige filteralternativer for å komme i gang med verktøyet.

Oversikt over kuttekommandoen

cut bruker følgende grunnleggende syntaks:

skjære 

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

ekko "streng_av_tegn" | skjære 

Vær oppmerksom på at fraværet av et alternativ genererer en feil. Her er noen flagg du kan bruke med cut for å påkalle de forskjellige funksjonene:

instagram viewer
Alternativ Beskrivelse
-b Kutt etter byteposisjon
-c Kutt etter karakterposisjon
-d Trekker ut streng ved hjelp av skilletegnet spesifisert med (-f) feltalternativ
-f Trekker ut etter et spesifisert felt
-s Utdrag kun for skilletegn
--komplement Skriv ut utskriften bortsett fra feltet du har spesifisert
--output-skilletegn Erstatt det eksisterende skilletegnet med det du har spesifisert

Her er noen eksempler på kutt-kommandoen som vil hjelpe deg å få en bedre forståelse av verktøyet og dets funksjoner.

1. Trekk ut spesifikke tegn fra en streng

Bruke -b alternativet for å hente strenger med tegn etter deres byteantall, som følger:

ekko "Hello World" | kutt -b 1,2,3,5,8,9

Produksjon:

Heloor

Du kan også angi en filbane i stedet for en streng:

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

Eller du kan trekke ut tegn i henhold til deres plassering i teksten. Bruke -c alternativet etterfulgt av sekvensen/rekkefølgen av tegn du må hente som følger:

ekko "Hello World" | kutt -c 1,2,3,5,6,8,10,11

Produksjon:

Hei gamle

På samme måte, for å hente felt eller kolonner fra en flatfildatabase, bruk cut-kommandoen med -f flaggalternativ:

cut -f 3 database.txt

2. Kutt ut rekkevidde av byte eller tegn

Du kan også bruke -b flagg med cut-kommandoen for å trekke ut og skrive ut flere rekker av byte som følger:

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

Du kan definere rekkevidden for å hente tegn ved å bruke -c flagg som følger:

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

3. Trekk ut tekst fra start- eller sluttposisjoner

Bruke -cn- alternativet for å trekke ut tekst fra n-te tegn og utover til slutten av linjen, hvor n er indeksen til et tegn i strengen.

For eksempel, for å trekke ut strengen fra det sjette tegnet til slutten av linjen:

kutt -c6- database.txt

Eller bruk følgende kommando for å hente fra start til siste m tegn fra filen:

kutt -c-8 database.txt

4. Klipp ut flere felt fra en fil

Du kan også skrive ut flere felt fra en fil ved å bruke -f flagg.

cut -f 1,2 database.txt

Produksjon:

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

5. Trekk ut tekst ved hjelp av skilletegn

Du kan bruke -d flagg for å spesifisere skilletegnet med -f alternativ. Skilletegnet spesifiserer tegnet som brukes til å skille felt i en tekstfil.

For eksempel, for å trekke ut den første kolonnen i /etc/passwd fil, bruk et kolon (:) som skilletegn:

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

På samme måte er avgrensningsverdien i den gitte tekststrømmen et enkelt mellomrom:

ekko "1% av 1%" | cut -d ' ' -f 2,3

Produksjon:

1 % av

6. Endre utdataavgrensning for visning

De --output-skilletegn flagget gir fleksibilitet til cut-kommandoutgangen. Du kan for eksempel bruke flagget til å vise utdataene på en egen linje ved å bruke $'\n' (nylinje) verdi, som følger:

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

Produksjon:

alice
Alice
/bin/sh

I tillegg kan du også erstatte et skilletegn for en inndatafil med det valgte skilletegnet i utdataene ved å bruke --output-skilletegn flagg:

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

Produksjon:

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

7. Klipp ut felt bare når en linje inneholder skilletegnet

Bruke -s flagg for å trekke ut felt bare når linjene inneholder et skilletegn. Følgende kommando vil for eksempel ikke hente feltet -f 1 med mindre den har et mellomromsskilletegn:

ekko "HelloWorld" | kutt -d " " -f 1 -s

Tvert imot, den nedenfor nevnte kommandoen vil generere en utgang ettersom strengen inneholder den spesifiserte skilletegn:

ekko "Hello World" | kutt -d " " -f 1 -s

Produksjon:

Hallo

På samme måte kan du også bruke et hvilket som helst annet tegn som skilletegn:

ekko "Hello: World" | kutt -d ":" -f 2 -s

Produksjon:

Verden

8. Kompletter kommandoutgangen

Cut-verktøyet lar deg også skrive ut alle feltene bortsett fra det angitte feltet. Bruke --komplement alternativet som følger for å hente alle detaljene for root-brukerkontoen bortsett fra den femte kolonnen:

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

Produksjon:

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

Tilsvarende, i eksemplet nedenfor -f 1 parameter må vises Hallo tekst imidlertid på grunn av --komplement alternativet, skriver den bare ut resten av den.

ekko "Hei til hele verden" | kutt -d " " -f 1 --komplement

Produksjon:

til hele verden

Det beste er at du kan kombinere cut-kommandoen med standardutgangen til andre Linux/Unix-kommandoer.

sed er et slikt tekstredigeringsverktøy du kan bruke til å slette, sette inn og erstatte teksten din. Du kan enkelt overføre utgangen til cut-kommandoen.

I eksemplet nedenfor, grep-kommandoen utdata sendes til sed-verktøyet som erstatter kolon (:) med en bindestrek (-) og deretter, cut viser felt 1, 6 og 7 som følger:

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

Produksjon:

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

Arbeide med tekst på Linux ved å bruke cut

Cut-kommandoen er et fleksibelt og effektivt kommandolinjeverktøy som du kan bruke i ulike brukstilfeller av tekstmanipulering. Den bruker operasjoner for å filtrere ut tekst fra filer eller standard inndata. Verktøyet har også en fordel som gjør det mulig for brukere å begrense teksten de vil vise og legge til skilletegn etter eget valg.

Denne kommandoen har imidlertid også noen begrensninger. Du kan ikke bruke regulære uttrykk til å spesifisere skilletegn eller bruke samtidige alternativer for flere kutt-kommandoer. Denne artikkelen har dekket grunnleggende til avanserte praktiske eksempler på dette verktøyet for å hjelpe nybegynnere med en klar forståelse av tekstmanipulasjonskommandoer på Linux.

De 5 mest nyttige Linux-tekstmanipuleringskommandoene

Vil du forbedre Linux-spillet ditt og lære mer om tekstmanipulering? Her er de fem beste Linux-kommandolinjeverktøyene for å starte reisen din.

Les Neste

DelekvitringE-post
Relaterte temaer
  • Linux
  • Linux-kommandoer
  • Elementær Linux
  • Linux Bash Shell
Om forfatteren
Rumaisa Niazi (10 artikler publisert)

Rumaisa er frilansskribent ved MUO. Hun har brukt mange hatter, fra en matematiker til en informasjonssikkerhetsentusiast, og jobber nå som SOC-analytiker. Hennes interesser inkluderer å lese og skrive om nye teknologier, Linux-distribusjoner og alt rundt informasjonssikkerhet.

Mer fra Rumaisa Niazi

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere