Linux-baserade operativsystem erbjuder många kommandoradsverktyg för textbearbetning som du kan använda i din dagliga rutin. Cut-kommandot är ett sådant textmanipuleringsverktyg som använder avgränsare, byte, fält och kolumner för att hämta en nödvändig sträng från en platt-fildatabas eller en rad.

Eftersom en platt-fil-databas inte har ett strukturellt förhållande och posterna separeras med hjälp av avgränsare, är cut ett idealiskt verktyg för att extrahera tecken eller bytes med information. Den här artikeln diskuterar cut-kommandot i detalj och visar några praktiska exempel med olika filteralternativ för att komma igång med verktyget.

Översikt över skärningskommandot

cut använder följande grundläggande syntax:

skära 

Du kan också skicka den med andra kommandon enligt följande:

echo "sträng_av_tecken" | skära 

Observera att frånvaron av något alternativ genererar ett fel. Här är några flaggor som du kan använda med cut för att anropa dess olika funktioner:

instagram viewer
Alternativ Beskrivning
-b Klipper efter byteposition
-c Skär efter karaktärsposition
-d Extraherar strängen med avgränsningstecknet som anges med (-f) fältalternativ
-f Extraherar med ett angivet fält
-s Utdrag för endast avgränsare
--komplement Skriv ut utskriften förutom fältet som du har angett
--utgångsavgränsare Ersätt den befintliga avgränsaren med den du har angett

Här är några exempel på klippkommandot som hjälper dig att få en bättre förståelse av verktyget och dess funktioner.

1. Extrahera specifika tecken från en sträng

Använd -b alternativet för att hämta teckensträngar efter deras byteantal, enligt följande:

echo "Hello World" | skära -b 1,2,3,5,8,9

Produktion:

Heloor

Du kan också ange en filsökväg istället för en sträng:

cut -b 1,2,3,4,5 filnamn.txt

Eller så kan du extrahera tecken enligt deras position i texten. Använd -c alternativet följt av sekvensen/ordningen av tecken du behöver hämta enligt följande:

echo "Hello World" | skär -c 1,2,3,5,6,8,10,11

Produktion:

Hej gamla

På liknande sätt, för att hämta fält eller kolumner från en databas med platt filer, använd kommandot cut med -f flaggalternativ:

cut -f 3 database.txt

2. Klipp intervall av byte eller tecken

Du kan också använda -b flagga med kommandot cut för att extrahera och skriva ut flera byteintervall enligt följande:

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

Du kan definiera intervallet för att hämta tecken med hjälp av -c flagga enligt följande:

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

3. Extrahera text från start- eller slutpositioner

Använd -cn- alternativet för att extrahera text från n: te tecken och framåt till slutet av raden, där n är indexet för ett tecken i strängen.

Till exempel, för att extrahera strängen från det sjätte tecknet till slutet av raden:

klipp -c6- database.txt

Eller använd följande kommando för att hämta från start till sista m tecken från filen:

klipp -c-8 database.txt

4. Klipp ut flera fält från en fil

Du kan också skriva ut flera fält från en fil med hjälp av -f flagga.

cut -f 1,2 database.txt

Produktion:

NAMN ÅLDER 
Jon 20
Lisa 24
Jack 18
Bruce 23
Nancy 19

5. Extrahera text med avgränsare

Du kan använda -d flagga för att ange avgränsaren med -f alternativ. Avgränsaren anger det tecken som används för att separera fält i en textfil.

Till exempel för att extrahera den första kolumnen i /etc/passwd fil, använd ett kolon (:) som avgränsare:

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

På samma sätt är avgränsningsvärdet i den givna textströmmen ett enda mellanslag:

echo "1% av 1%" | skära -d ' ' -f 2,3

Produktion:

1 % av

6. Ändra utdataavgränsare för visning

De --utgångsavgränsare flaggan ger flexibilitet till utmatningen av cut-kommandot. Du kan till exempel använda flaggan för att visa utdata på en separat rad med hjälp av $'\n' (nyrad) värde, enligt följande:

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

Produktion:

alice
Alice
/bin/sh

Dessutom kan du också ersätta en avgränsare för en indatafil med den avgränsare du väljer i utdata genom att använda --utgångsavgränsare flagga:

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. Klipp ut fält endast när en linje innehåller avgränsaren

Använd -s flagga för att extrahera fält endast när raderna innehåller en avgränsare. Till exempel kommer följande kommando inte att hämta fältet -f 1 såvida den inte har en mellanslagsavgränsare:

echo "HelloWorld" | skär -d " " -f 1 -s

Tvärtom kommer det nedan nämnda kommandot att generera en utdata eftersom strängen innehåller den specificerade avgränsaren:

echo "Hello World" | skär -d " " -f 1 -s

Produktion:

Hej

På samma sätt kan du också använda vilket annat tecken som helst som avgränsare:

echo "Hej: Världen" | skär -d ":" -f 2 -s

Produktion:

Värld

8. Komplettera kommandoutgången

Klippverktyget låter dig också skriva ut alla fält utom det angivna fältet. Använd --komplement alternativet enligt följande för att hämta alla detaljer för rotanvändarkontot utom den femte kolumnen:

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

Produktion:

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

På liknande sätt, i exemplet nedan -f 1 parametern måste visas Hej text dock på grund av --komplement alternativet skriver den bara ut resten av den.

echo "Hej till hela världen" | cut -d " " -f 1 --komplement

Produktion:

till hela världen

Det bästa är att du kan kombinera cut-kommandot med standardutdata från andra Linux/Unix-kommandon.

sed är ett sådant textredigeringsverktyg som du kan använda för att ta bort, infoga och ersätta din text. Du kan enkelt leda dess utdata till cut-kommandot.

I exemplet nedan, kommandot grep utdata skickas till sed-verktyget som ersätter kolon (:) med ett bindestreck (-) och sedan visar cut fälten 1, 6 och 7 enligt följande:

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

Produktion:

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

Arbeta med text på Linux med cut

Cut-kommandot är ett flexibelt och effektivt kommandoradsverktyg som du kan använda i olika användningsfall av textmanipulation. Den använder operationer för att filtrera bort text från filer eller standardindata. Verktyget har också en fördel som gör det möjligt för användare att begränsa den text de vill visa och lägga till avgränsare efter eget val.

Detta kommando har dock också vissa begränsningar. Du kan inte använda reguljära uttryck för att ange avgränsare eller använda samtidiga alternativ för flera klippkommandon. Den här artikeln har täckt grundläggande till avancerad nivå praktiska exempel på detta verktyg för att hjälpa nybörjare med en tydlig förståelse av textmanipuleringskommandon på Linux.

De 5 mest användbara Linux-textmanipuleringskommandona

Vill du förbättra ditt Linux-spel och lära dig mer om textmanipulation? Här är de fem bästa Linux-kommandoradsverktygen för att börja din resa.

Läs Nästa

Dela med sigTweetE-post
Relaterade ämnen
  • Linux
  • Linux-kommandon
  • Linux Elementary
  • Linux Bash Shell
Om författaren
Rumaisa Niazi (10 publicerade artiklar)

Rumaisa är frilansskribent på MUO. Hon har burit många hattar, från en matematiker till en informationssäkerhetsentusiast, och arbetar nu som SOC-analytiker. Hennes intressen inkluderar att läsa och skriva om ny teknik, Linux-distributioner och allt kring informationssäkerhet.

Mer från Rumaisa Niazi

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera