Android

Linux kutt kommando med eksempler

Linux команда cut - вырезать часть текстового файла (строки).

Linux команда cut - вырезать часть текстового файла (строки).

Innholdsfortegnelse:

Anonim

Det er mange verktøy tilgjengelig i Linux og Unix-systemer som lar deg behandle og filtrere tekstfiler. Cut er et verktøy for kommandolinjer som lar deg klippe deler av linjer fra spesifiserte filer eller data i rør og skrive ut resultatet til standardutdata. Den kan brukes til å skjære deler av en linje etter avgrenser, byteposisjon og karakter.

I denne opplæringen vil vi vise deg hvordan du bruker Linux cut-kommandoen gjennom praktiske eksempler og detaljerte forklaringer på de vanligste kuttalternativene.

Hvordan bruke kuttkommandoen

Syntaks for klippekommandoen er som følger:

cut OPTION……

Når du bruker kuttkommandoen, må du bruke ett og bare ett av følgende alternativer:

  • -f (- --fields=LIST ) - Velg ved å spesifisere et felt, et sett med felt eller et felt med felt. Dette er det mest brukte alternativet. -b ( --bytes=LIST ) - Velg ved å spesifisere en byte, et sett med byte eller et utvalg av byte. -c ( --characters=LIST ) - Velg ved å spesifisere et tegn, et sett med tegn eller et område med tegn.

Andre alternativer er:

  • -d ( --delimiter ) - Angi en avgrenser som skal brukes i stedet for standard "TAB" avgrenser. - komplement - --complement utvalget. Når du bruker dette alternativet, vil kutt vise alle byte, tegn eller felt bortsett fra det valgte. -s ( --only-delimited ) - Som standard vil utskriften skrive ut en linje som ikke inneholder noen avgrensningstegn. Når du bruker dette alternativet, vil kutt ikke skrive ut linjer som ikke inneholder avgrensere. --output-delimiter - Standard er å bruke inngangsavgrenseren som utgangsavgrenser. Dette alternativet lar deg spesifisere en annen utskriftsavgrensningsstreng.

Kuttkommandoen kan godta null eller flere FIL-navn. Hvis ingen FIL er spesifisert, eller når FIL er - , vil klippet lese standardinngangen.

LIST-argumentet som sendes til alternativene -f , -b og -c , kan være et heltall, flere heltall atskilt med komma, et område med heltall eller flere heltallområder separert med kommaer. Hvert område kan være ett av følgende:

  • N Nth-feltet, byte eller tegn, fra 1. N- fra Nth-feltet, byte eller tegnet, til slutten av linjen. NM fra Nth til Mth-feltet, byte eller karakter. -M fra det første til Mth-feltet, byte eller karakter.

Slik klipper du etter felt

Cut-kommando brukes mest for å vise valgte felt fra hver linje med filer eller standardinndata. Når ikke spesifisert, er standardavgrenseren "TAB".

I eksemplene nedenfor bruker vi følgende fil. Alle felt er atskilt med faner.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

For å vise det første og det tredje feltet du bruker:

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

Eller hvis du vil vise fra første til fjerde felt:

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Hvordan kutte basert på en avgrenser

For å kutte basert på en avgrenser bruker du -d alternativet etterfulgt av avgrenseren du vil bruke.

For å vise første og tredje felt ved å bruke “:” som en avgrenser, skriver du for eksempel:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

Du kan bruke et hvilket som helst enkelt tegn som avgrenser. I det følgende eksemplet bruker vi mellomromstegnet som en avgrenser og skriver ut det andre feltet:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

Hvordan komplettere utvalget

For å utfylle --complement bruk alternativet --complement . Dette vil bare skrive ut de feltene som ikke er valgt med alternativet -f .

Følgende kommando skriver ut alt felt unntatt det første og det tredje:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Slik spesifiserer du en utgangsavgrenser

For å spesifisere output-avgrenseren, bruk alternativet --output-delimiter . For å sette utgangsavgrenseren til _ vil du for eksempel bruke:

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

Hvordan klippe av Bytes and Characters

La oss gjøre et skille mellom byte og tegn før vi går videre.

En byte er 8 biter og kan representere 256 forskjellige verdier. Da ASCII-standarden ble etablert, tok den hensyn til alle bokstavene, tallene og symbolene som er nødvendige for å jobbe med engelsk. ASCII-karaktertabellen har 128 tegn, og hvert tegn er representert med en byte. Da datamaskiner begynte å bli verdensomspennende, begynte teknologiselskaper å introdusere nye karakterkoder for forskjellige språk og for språk som har mer enn 256 tegn, var en enkel 1 til 1 kartlegging ikke mulig. Dette fører til forskjellige problemer som å dele dokumenter eller bla gjennom nettsteder og det var behov for en ny Unicode-standard som kan håndtere de fleste av verdens skriftsystemer. UTF-8 ble opprettet for å løse disse problemene. I UTF-8 er ikke alle tegn representert med 1 byte. Tegn kan være representert med 1 byte til 4 byte.

I de følgende eksemplene bruker vi ü tegnet som tar 2 byte.

Bruk alternativet -b ( --bytes ) for å kutte ut en del av en linje ved å spesifisere en byteposisjon.

Velg 5. byte:

echo 'drüberspringen' | cut -b 5

b

Velg 5., 9. og 13. byte:

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Velg området fra 1. til 5. byte:

echo 'drüberspringen' | cut -b 1-5

drüb

Når jeg skriver denne artikkelen, har ikke versjonen av kuttet som er bundet i GNU-kjerner, en mulighet til å klippe ut etter tegn. Når du bruker alternativet -c oppfører kutt seg det samme som når du bruker alternativet -b .

Klipp eksempler

Klippekommandoen brukes vanligvis i kombinasjon med andre kommandoer gjennom rørføring. Her er noen eksempler.

Få en liste over alle brukere

Utgangen fra getent passwd kommandoen sendes til å cut som skriver ut det første arkivet ved å bruke : som avgrenser.

getent passwd | cut -d ':' -f1

Vis 10 mest brukte kommandoer

I det følgende eksemplet blir kutt brukt til å stripe de første 8 byte fra hver linje i history .

history | cut -c8- | sort | uniq -c | sort -rn | head

Konklusjon

Nå skal du ha en god forståelse av hvordan du bruker Linux cut-kommandoen. Selv om det er veldig nyttig, har kuttkommandoen noen begrensninger. Det støtter ikke å spesifisere mer enn ett tegn som en avgrenser, og det støtter ikke flere desimeter.

kutt terminal