Linux Cut Command

Linux Cut Command

Tenk på følgende ansattbord, produsert i en tekstredigerer med en font med fast bredde, for eksempel Courier:

Navn Fødselsdato Tidspunkt for fødsel Spesialitet Dato ansatt Tid ansatt
John 11-05-91 10:11:12 Ingeniør 12-06-14 13:14:15
Paul 03-16-86 16:17:18 Regnskapsfører 06-19-15 19:20:21
Peter 07-20-81 snekker 08-21-16
Mary 22:23:24 Arkitekt 01:02:03
Susan 04-17-87 17:22:36 Sekretær 21-49-55 08:43:32

Anta at disse dataene er i en fil som heter, ansatt.txt, i en Linux brukerkatalog. Det er seks kolonner med tekst med seks overskrifter, som er navn, fødselsdato, fødselstid osv. Det er seks rader som består av en overskriftsrekke og fem datrader. Så dette er en tabell med kolonner og rader (linjer). Innholdet i hver tabellcelle kalles et felt. Et felt er også en understreng. Siden en fast breddefont har blitt brukt, er det kolonner med tegn. Hver tekstkolonne har kolonner med tegn. Så det er kolonner med tegn og kolonner med felt.

For å skrive tabellen, start med overskriftsraden. Skriv inn det første feltet og trykk på fanen -tasten på tastaturet. Skriv inn neste felt og trykk på Tab -tasten. Fortsett på denne måten til etter siste toppfelt. Trykk på Enter -tasten. Når fanen tasten trykker på, settes tegnet '\ t' inn i filkoden, ikke sett av brukeren. Imidlertid blir det sett av brukeren som ett rom (som kan være langt). Når enter -tasten trykkes på slutten av linjen, settes tegnet, '\ n' inn i filkoden, ikke sett av brukeren. Tab -tasten regnes som ett tegn.

Hver av datalinjene er skrevet på samme måte. Imidlertid, hvis et felt er tomt, må det fylles ved å trykke på romfelt-tasten til fanen-tasten er trykket på for å gå til neste tekstkolonne; slik at begynnelsen på neste felt stemmer overens med begynnelsen av tekstkolonnen.

For Ubuntu Text Editor spenner Tab -tasten åtte tegn. Så når fanen -tasten trykkes, er antall tegn den legger til slik at hvis feltet var fullt av tegn, ville antallet tegn være et multiplum av åtte. Ikke glem at på slutten av en linje må Enter -tasten trykkes, og denne handlingen setter inn ett tegn i koden, ikke sett av brukeren. Når tabeltasten trykkes, settes et enkelt tegn inn i koden, ikke sett av brukeren. Så fane -tasten regnes som ett tegn.

Linjene er avgrenset av Newline -tegnene. Feltene er avgrenset av fanekarakterene. Felt må ikke nødvendigvis være så klassiske som beskrevet ovenfor. Avgrenseren må ikke nødvendigvis være et fane -tegn. I tabellen ovenfor, ':' Kan betraktes som en avgrenser, i stedet for fanen. I dette tilfellet vil understrengene i hver linje bli delt ut. For eksempel, i Field-feltet, ':' ville for eksempel avgrense to tegnsøyler (i begge ender). For det samme bordet, ville den første linjen og linjen for Peter ikke ha noen avgrensning. Hele en slik linje blir sitt felt.

Avgrensning av karakterkolonner kan gå over fanefelt. For eksempel den siste ':' I Field-tid-av-fanefeltet, og det første ':' I det tidsansatte fanefeltet, avgrenser karakterkolonner, kryssende fanefelt og fanetegn. Andre avgrensende karakterer som kommaer, kan også finnes i andre filer.

Artikkelinnhold

  • Kutt syntaks
  • Å kutte ut feltkolonner
  • Å kutte ut søyler med byte
  • Kutte ut kolonner med tegn
  • Avgrensning
  • Alternativet
  • Alternativet -komplement
  • Konklusjon

kutt syntaks

Cut -kommandoen kopierer ut kolonner etter tegn eller etter felt, basert på visse alternativer og deres verdier. Det kan også kopiere ut rader, men betingelsene for å kopiere ut rader er begrenset. Den kan kopiere ut et sett med kolonner og rader; Fortsatt er forholdene for de involverte radene, begrenset. Rader er linjer. Syntaksen er:

kuttalternativ… [fil] ..

Det kan være mer enn en fil. Imidlertid bruker denne opplæringen bare en fil hvis navn er ansatt.txt i brukerkatalogen, og med innholdet ovenfor. Hvis det ikke er noe filargument, må du lese fra standardinngang. Cut er en Linux Shell -kommando med forskjellige mulige alternativer. Noen alternativer tar verdier.

Kolonnetelling begynner fra 1 og ikke null. Så den første karakterkolonnen (til venstre) er kolonne 1; Den andre karakterkolonnen er kolonne 2; Den tredje karakterkolonnen er kolonne 3, og så videre. Den første feltkolonnen (til venstre) er feltkolonne 1; Den andre feltkolonnen er feltkolonne 2; Den tredje feltkolonnen er feltkolonne 3, og så videre.

Så kopierer kommandoen ut seksjoner fra linjer i en fil, som det er blitt påpekt. Det skriver normalt ut resultatet til standardutgang.

Kutte ut felt

Å kutte ut felt betyr å kopiere ut felt. Den opprinnelige filen forblir intakt. -F -alternativet brukes til dette, der F står for felt. -f bruker fane -tegnet som avgrensning. Så i

$ kutt -f 1,3 ansatt.tekst

-f betyr kommandoen kopierer ut felt og ikke tegn eller byte. Verdien for -f er 1 og 3 atskilt med komma og ingen plass. Dette betyr å sende til standardutgang, feltkolonnene 1 og 3. Resultatet er:

Navn Tidspunkt for fødsel
John 10:11:12
Paul 16:17:18
Peter
Mary 22:23:24
Susan 17:22:36

Hvis feltkolonner, 1, 3, 5 var nødvendige, ville verdien for -F ha vært 1,3,5 tall atskilt med komma, og ingen plass. Slik kan feltkolonner velges. I dette tilfellet er Tab avgrenseren.

Utvalg av feltkolonner

Følgende kommando velger feltkolonner fra feltkolonne, 2 til feltkolonne, 5, inkluderende:

$ kutt -f 2-5 ansatt.tekst

Utgangen er:

Fødselsdato Tidspunkt for fødsel Spesialitet Dato ansatt
11-05-91 10:11:12 Ingeniør 12-06-14
03-16-86 16:17:18 Regnskapsfører 06-19-15
07-20-81 snekker 08-21-16
22:23:24 Arkitekt
04-17-87 17:22:36 Sekretær 21-49-55

Legg merke til bindestrek mellom 2 og 5 for å indikere området.

Kopiering fra et feltnummer, n og over

Følgende kommando kopier fra den femte feltkolonnen og over:

$ kutt -f 5- Ansatt.tekst

Legg merke til bindestrek like etter 5, ingen plass i mellom. Resultatet er:

Dato ansatt Tid ansatt
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Kopiering under feltnummer, n

Følgende kommando, kopierer den andre feltkolonnen og de nedenfor:

$ kutt -f -2 ansatt.tekst

Legg merke til bindestrek like før 2, ingen plass mellom. Resultatet er:

Navn Fødselsdato
John 11-05-91
Paul 03-16-86
Peter 07-20-81
Mary
Susan 04-17-87

Å kutte ut søyler med byte

Kolonner med byte kopieres ut på en lignende måte som feltkolonner. Hvis ASCII -koden er i kraft, er en byte et tegn. I dette tilfellet er en fane (\ t) et tegn, og hvis den er kopiert ut, vil den ha sin virkning av å ta markøren til hvor den niende karakteren skal være. Alternativet for byte er -b. Følgende kommando illustrerer dette for andre, tredje og fjerde byte (karakter) kolonner:

$ kutt -b 2,3,4 ansatt.tekst

Utgangen er:

ame
ohn
Aul
Ete
ary
USA

Effekt av fanen

Følgende kommando viser byte -kolonner fra den første til den tiende:

$ kutt -b 1-10 ansatt.tekst

Utgangen er:

Navn Dato
John 11-05
Paul 03-
Peter
Mary 07-2
Susan 04-1

Antall byte (tegn) i hver rad er ikke det samme fordi (a) det er to romkarakterer etter Paul, innen Paul; og (b) Tab -tegnet regnes som ett tegn (og det har sin effekt).

Kutte ut kolonner med tegn

Kolonner med tegn blir håndtert på samme måte som kolonner med byte. Faktisk, når du arbeider med multi-byte karakterkoding, bruk tegn, i stedet for byte. Alternativet for tegn er -c. Følgende to kommandoer gjengir de to foregående utgangene (i rekkefølge):

$ kutt -c 2,3,4 ansatt.tekst
$ kutt -C 1-10 ansatt.tekst

Avgrensning

I stedet for å bruke fanekarakteren til å skille understrenger, avgrensere som ':', '-', ',', "osv. kan bli brukt. En slik avgrenser re-partisjoner understrenger som danner linjen. Med andre ord, i stedet for at felt blir atskilt med Tab -tegnet, er de atskilt av den nye avgrenseren. Kommandoene i dette tilfellet ligner feltkommandoene med alternativet -f, men med -d -alternativet for avgrenser, inkludert. Følgende kommando kopierer ut de to første feltene basert på '-' avgrenseren.

$ cut -d ' -' -f 1,2 ansatt.tekst

Utgangen er:

Navn Fødselsdato Tidspunkt for fødsel Spesialitet Dato ansatt Tid ansatt
John 11-05
Paul 03-16
Peter 07-20
Mary 22:23:24 Arkitekt 01:02:03
Susan 04-17

Dette resultatet er logisk riktig. All den første raden har blitt vist, ettersom den ikke har noen '-'. Hele den femte raden er vist, ettersom den ikke har noen '-'. Fanekarakteren nå, er bare et enkelt tegn, selv om det fremdeles har sin effekt. Raden for Paul, for eksempel "Paul 03" er nå et felt og "16" er det andre feltet. Med '-' avgrenser er vertikale justeringer for de nye feltene dårlige. To felt er returnert, atskilt med '-'. '-' har blitt avkortet på nytt.

De første og femte radene som ikke har avgrensere, kan fjernes med alternativet. Husk at rader i dette emnet er linjer.

Alternativet

Ovennevnte resultat skal ikke ha første og femte linjer. Alternativet eliminerer linjer som ikke har avgrenseren. Med -s -alternativet blir kommandoen ovenfor:

$ cut -s -d ' -' -f 1,2 ansatt.tekst

Et mer tilfredsstillende resultat oppnås, det vil si:

John 11-05
Paul 03-16
Peter 07-20
Susan 04-17

De to nye re-partisjonerte feltkolonnene, er nå tydelig sett.

Alternativet -komplement

Dette kopierer komplementene for kolonnene til de valgte byte, tegn eller felt. Følgende kommando kopierer ut de to siste feltene (av Tab Delimiter), i stedet for de fire første:

$ kutt -komplement -f -4 ansatt.tekst
Dato ansatt Tid ansatt
12-06-14 13:14:15
06-19-15 19:20:21
08-21-16
01:02:03
21-49-55 08:43:32

Konklusjon

Kuttkommandoen kopierer ut kolonner med byte eller av tegn eller understrenger, ut av tekstlinjer i en fil. Som standard sender den de valgte delene av linjene til standardutgang. En understrengende avgrenset er et felt. Som standard er avgrenseren for understrenger fanen. Imidlertid kan det endres. En avgrensning som '-' eller ':' eller "osv. kan bli brukt. Når det er gjort, blir linjen omdirigert til forskjellige delstrenger. Alternativet -S kan brukes til å eliminere fra utgangen, linjer som ikke har avgrenseren.