Linux-leikkauskomento

Päivitetty: 5.4.2019, Computer Hope

Unixissa -tyyppisten käyttöjärjestelmien kohdalla cut-komento poistaa (”leikkaa”) osan tiedostoista tai tiedostoista.

Tämä asiakirja kattaa cut-version GNU / Linux-version.

Syntaksi

cut OPTION... ...

Asetukset

-b, –bytes = LIST Valitse vain tavut kustakin rivistä LIST-määrityksen mukaisesti. LIST määrittelee tavun, tavusarjan tai tavualueen; katso alla LISTIN määrittely.
-c, –characters = LIST Valitse vain merkit kustakin rivistä LIST-määrityksen mukaisesti. LIST määrittelee merkin, merkkisarjan tai merkkialueen; katso alla LISTIN määrittely.
-d, –delimiter = DELIM käytä DELIM-merkkiä kentän erottimen välilehden sijaan.
-f, –fields = LIST valitse vain nämä kentät kullekin riville; tulosta myös kaikki rivit, joissa ei ole erotinmerkkiä, ellei -s -vaihtoehtoa ole määritetty. LIST määrittelee kentän, joukon kenttiä tai kenttäalueen; katso alla LISTIN määrittely.
-n Tämä vaihtoehto ohitetaan, mutta se sisältyy yhteensopivuussyistä.
– täydentää täydentää valittujen tavujen, merkkien tai kenttien joukkoa.
-s, –on-eroteltu älä tulosta viivoja, jotka eivät sisällä erottimia.
–output-delimiter = STRING käytä STRING: tä lähtöerotinmerkkijonona. Oletuksena on käyttää syötteen erotinta.
–help Näytä ohjeviesti ja poistu.
–version tulosta versiotiedot ja poistu.

Käyttöhuomautukset

Kun haet leikkausta, käytä -b, -c tai -f -vaihtoehtoa, mutta vain yhtä niistä.

Jos FILE-tiedostoa ei määritetä, cut-luku luetaan vakiotulosta.

LISTAN määrittely

Jokainen LIST koostuu kokonaisluvusta, kokonaislukualueesta tai useista pilkuilla erotetuista kokonaislukualueista. Valittu syöte kirjoitetaan samassa järjestyksessä kuin se luetaan, ja se kirjoitetaan tulostettavaksi täsmälleen kerran. Alue koostuu:

Oletetaan esimerkiksi, että sinulla on tiedosto nimeltä data.txt, joka sisältää seuraavan tekstin:

onetwothreefourfivealphabetagammadeltaepsilon

Tässä esimerkissä jokainen näistä sanoista erotetaan sarkainmerkillä, ei välilyönneillä. Sarkainmerkki on oletusarvoinen leikkauksen erotin, joten se pitää oletusarvoisesti kenttää millä tahansa välilehden rajoittamalla.

Jos haluat ”leikata” vain jokaisen rivin kolmannen kentän, käytä komentoa:

cut -f 3 data.txt

… joka tuottaa seuraavan:

threegamma

Jos haluat sen sijaan ”leikata” vain kunkin rivin toisesta neljänteen kentän, käytä komentoa:

cut -f 2-4 data.txt

… joka tuottaa seuraavan:

twothreefourbetagammadelta

Jos haluat” leikata ”vain ensimmäiset käytä jokaisen rivin toisen ja neljännen – viidennen kentän (jättämättä kolmannen kentän) komentoa:

cut -f 1-2,4-5 data.txt

… joka tuottaa seuraavan:

onetwofourfivealphabetadeltaepsilon

Tai sanotaan sinulle haluat kolmannen kentän ja jokaisen sen jälkeen olevan kentän, jättämättä kaksi ensimmäistä kenttää. Tässä tapauksessa voit käyttää komentoa:

cut -f 3- data.txt

… joka tuottaa seuraavan:

threefourfivegammadeltaepsilon

Alueen määrittäminen LIST: llä koskee myös merkkien (-c) tai tavujen (-b) leikkaamista riviltä. Jos esimerkiksi haluat lähettää vain datan.txt jokaisen rivin kolmannen – kahdestoista merkin, käytä komentoa:

cut -c 3-12 data.txt

… joka tuottaa seuraava:

etwothrephabetag

Muista, että jokaisen sanan välissä oleva ”välilyönti” on itse asiassa yksi sarkainmerkki, joten molemmissa tulostusriveissä on kymmenen merkkiä: kahdeksan aakkosnumeeriset merkit ja kaksi sarkainmerkkiä. Toisin sanoen leikkaus jättää pois jokaisen rivin kaksi ensimmäistä merkkiä laskemalla sarkaimet yhtenä merkkinä; tulostaa merkkejä kolmesta kaksitoista laskemalla välilehdet yhtenä merkkinä; ja jättämällä merkit pois kahdestoistaosan jälkeen.

Tavujen laskeminen merkkien sijaan johtaa tässä tapauksessa samaan tulokseen, koska ASCII-koodatussa tekstitiedostossa kutakin merkkiä edustaa yksi tavu (kahdeksan bittiä) ) tietoja. Joten komento:

cut -b 3-12 data.txt

… tuottaa tiedostolle data.txt täsmälleen saman tuloksen:

etwothrephabetag

Muun kuin välilehden erottimen määrittäminen

Sarkainmerkki on oletusarvoinen erotin, jota leikkaus käyttää määrittämään, mikä on kenttä. Joten jos tiedostosi kentät on jo rajattu välilehdillä, sinun ei tarvitse määrittää muuta erotinmerkkiä.

Voit kuitenkin määrittää minkä tahansa merkin erottimeksi.Esimerkiksi tiedosto / etc / passwd sisältää tietoja jokaisesta järjestelmän käyttäjästä, yhden käyttäjän riviä kohden, ja jokainen tietokenttä on erotettu kaksoispisteellä (”:”). Esimerkiksi pääkäyttäjän / etc / passwd-rivi voi näyttää tältä:

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

Nämä kentät sisältävät seuraavat tiedot seuraavassa järjestyksessä: erotettu kaksoispistemerkillä:

  1. käyttäjätunnus
  2. salasana (näkyy x, jos salattu)
  3. käyttäjätunnus (UID)
  4. Ryhmätunnus (GID)
  5. Kommenttikenttä (käytetään sormikomennolla)
  6. Kotihakemisto
  7. Kuori

Käyttäjänimi on rivin ensimmäinen kenttä, joten jos haluat näyttää jokaisen käyttäjänimen järjestelmässä, käytä komentoa:

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

… joka tuottaa esimerkiksi:

rootdaemonbinsyschope

(Tyypillisessä järjestelmässä on paljon enemmän käyttäjätilejä, mukaan lukien monet järjestelmipalveluille ominaiset tilit, mutta teemme tässä esimerkissä käyttäjiä on vain viisi.)

Jokaisen rivin / etc / passwd-tiedoston kolmas kenttä on UID (käyttäjätunnus), joten jos haluat näyttää kunkin käyttäjänimen ja käyttäjätunnuksen, käytä komentoa:

… joka tuottaa esimerkiksi seuraavat:

root:0daemon:1bin:2sys:3chope:1000

Kuten näette, tulos on erotettu oletusarvoisesti samalla syötteelle määritetyllä erotinmerkillä. Tässä tapauksessa tämä on kaksoispiste (”:”). Voit kuitenkin määrittää toiselle erotinmerkinnälle tulon ja lähdön. Joten jos haluat suorittaa edellisen komennon, mutta lähdön rajaa välilyönti, voit käyttää komentoa:

cut -f 1,3 -d ":" --output-delimiter=" " /etc/passwd
root 0daemon 1bin 2sys 3chope 1000

Mutta entä jos haluat, että tulos erotetaan välilehdellä ”Sarkainmerkin määrittäminen komentorivillä on hieman monimutkaisempi, koska se on tulostamaton merkki. Jos haluat määrittää sen komentoriville, sinun on” suojattava ”se kuorelta. Tämä tehdään eri tavalla riippuen siitä, minkä kuoren sinä” uudelleen, mutta Linuxin oletuskuoressa (bash) voit määrittää sarkainmerkin merkillä $ ”\ t”. Joten komento:

cut -f 1,3 -d ":" --output-delimiter=$"\t" /etc/passwd

… tuottaa esimerkiksi seuraavan:

root0daemon1bin2sys3chope1000

Esimerkkejä

cut -c 3 file.txt

Tulosta tiedoston file.txt jokaisen rivin kolmas merkki jättämällä muut pois.

cut -c 1-3 file.txt

Tulosta tiedoston file.txt jokaisen rivin kolme ensimmäistä merkkiä, loput jättämättä.

cut -c -3 file.txt

Sama kuin yllä olevan komennon. Tulosta file.txt-tiedoston jokaisen rivin kolme ensimmäistä merkkiä.

cut -c 3- file.txt

Tulosta kolmas tiedosto file.txt-tiedoston jokaisen rivin viimeisten merkkien kautta jättämättä kaksi ensimmäistä merkkiä.

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

Tulosta tiedoston / etc / passwd ensimmäinen kenttä, jossa kentät on erotettu kaksoispisteellä (”:”). / Etc / passwd: n ensimmäinen kenttä on käyttäjänimi, joten tämä komento tuottaa kaikki passwd-tiedoston käyttäjätunnukset.

grep "/bin/bash" /etc/passwd | cut -d ":" -f 1,6

Anna ensimmäinen ja kuudes kenttä, kaksoispisteellä eroteltu kaikista tiedostoista / etc / passwd, jotka määrittelevät / bin / bash kirjautumiskuoreksi. Tämä komento antaa käyttäjänimen ja kotihakemiston jokaiselle käyttäjälle, jonka kirjautumissuojaus on / bin / bash.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *