Linux cut parancs

Frissítve: 2019.04.05., A Computer Hope

Unix rendszeren operációs rendszerhez hasonlóan a cut parancs eltávolítja (“kivágja”) a fájl vagy fájlok minden egyes szakaszát.

Ez a dokumentum a kivágás GNU / Linux verzióját tartalmazza.

Szintaxis

cut OPTION... ...

Opciók

-b, –bájt = LIST Az egyes sorokból csak a bájtokat válassza ki a LIST listában megadottak szerint. A LIST meghatároz egy bájtot, bájtkészletet vagy bájttartományt; lásd alább a LIST megadása.
-c, –characters = LIST Az egyes sorokból csak a LIST-ben meghatározott karaktereket válassza ki. A LIST karaktert, karakterkészletet vagy karaktertartományt határoz meg; lásd alább a LIST megadása.
-d, –delimiter = DELIM a DELIM karaktert használja tabulátor helyett a mezőhatárolóhoz.
-f, –fields = LIST csak ezeket a mezőket válassza ki az egyes sorokban; kinyomtathat minden olyan sort is, amely nem tartalmaz elválasztó karaktert, hacsak az -s opció nincs megadva. A LIST mezőt, mezőkészletet vagy mezőtartományt határoz meg; lásd alább a LIST megadása.
-n Ezt az opciót figyelmen kívül hagyják, de kompatibilitási okokból tartalmazzák.
– kiegészítés kiegészíti a kiválasztott bájtok, karakterek vagy mezők halmazát.
-s, –on-tagolt ne nyomtasson elválasztókat nem tartalmazó sorokat.
–output-delimiter = STRING a STRING parancsot használja kimeneti elválasztó karakterláncként. Az alapértelmezett a bemeneti határoló használata.
–help Súgóüzenet megjelenítése és kilépés.
–version kimeneti verzióinformáció és kilépés.

Használati megjegyzések

A cut meghívásakor használja a -b, -c vagy -f opciót, de csak az egyiket.

Ha nincs megadva FILE, akkor a cut a standard bemenetből olvas.

LIST megadása

Minden LIST egy egész számból, egy egész tartományból vagy több vesszővel elválasztott egész tartományból áll. A kiválasztott bemenet ugyanabban a sorrendben van megírva, mint amelyet olvasunk, és pontosan egyszer írjuk ki. A tartomány a következőkből áll:

Például mondjuk azt, hogy van egy data.txt nevű fájlja, amely a következő szöveget tartalmazza:

onetwothreefourfivealphabetagammadeltaepsilon

Ebben a példában ezeket a szavakat tabulátor karakter választja el, nem szóköz. A tab karakter a vágás alapértelmezett elválasztója, ezért alapértelmezés szerint a mezőt bármi, amelyet tabulátor határolja.

Az egyes sorok csak a harmadik mezőjének “kivágásához” használja a következő parancsot:

cut -f 3 data.txt

… amely a következőket adja ki:

threegamma

Ha ehelyett az egyes sorok csak a második-negyedik mezőjét akarja “kivágni”, használja a következő parancsot:

cut -f 2-4 data.txt

… amely a következőket adja ki:

twothreefourbetagammadelta

Ha csak az első Minden sor második és negyedik-ötödik mezője (a harmadik mező nélkül) használja a következő parancsot:

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

…, amely a következőket adja ki:

onetwofourfivealphabetadeltaepsilon

Vagy mondjuk a harmadik mezőt és minden utána lévő mezőt akar, az első két mezőt kihagyva. Ebben az esetben használhatja a következő parancsot:

cut -f 3- data.txt

… amely a következőket adja ki:

threefourfivegammadeltaepsilon

A tartomány LIST-sel történő megadása a karakterek (-c) vagy bájtok (-b) vágására is vonatkozik. Például a data.txt minden sorának csak a harmadik-tizenkettedik karakterének kiadásához használja a következő parancsot:

cut -c 3-12 data.txt

… a következőket:

etwothrephabetag

Ne feledje, hogy az egyes szavak közötti “szóköz” valójában egyetlen tabulátor karakter, tehát a kimenet mindkét sora tíz karaktert jelenít meg: nyolc alfanumerikus karakter és két tabulátor karakter. Más szavakkal, a cut elhagyja az egyes sorok első két karakterét, a füleket egy-egy karakterként számolja; három-tizenkettő karakter kiírása, a füleket egy-egy karakterként számolva; és a karakterek elhagyása a tizenkettedik után.

A karakterek helyett a bájtok megszámlálása ebben az esetben ugyanazt a kimenetet eredményezi, mert egy ASCII kódolású szövegfájlban minden karaktert egyetlen bájt (nyolc bit) képvisel. ) adatok. Tehát a következő parancs:

cut -b 3-12 data.txt

… a data.txt fájlunkhoz pontosan ugyanazt a kimenetet fogja létrehozni:

etwothrephabetag

A fülek kivételével más határoló megadása

A tabulátor karakter az alapértelmezett elválasztó, amelyet a vágás használ arra, hogy meghatározza, mi alkot mezőt. Tehát, ha a fájl mezőit már tabulátorok határolják, akkor nem kell más elválasztó karaktert megadnia.

Bármelyik karaktert megadhatja elválasztóként.Például az / etc / passwd fájl a rendszer minden egyes felhasználójáról, soronként egy felhasználóról tartalmaz információt, és minden információmezőt kettőspont határol (“:”). Például a root felhasználó / etc / passwd sora így nézhet ki:

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

Ezek a mezők a következő információkat tartalmazzák a következő sorrendben: kettőspont karakterrel elválasztva:

  1. felhasználónév
  2. jelszó (titkosítva x-ként jelenik meg)
  3. felhasználói azonosító száma (UID)
  4. Csoport azonosító száma (GID)
  5. Megjegyzés mező (az ujjparancs által használt)
  6. Saját könyvtár
  7. Shell

A felhasználónév a sor első mezője, ezért az egyes felhasználónévek megjelenítéséhez a rendszeren használja a következő parancsot:

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

… , például:

rootdaemonbinsyschope

(Sokkal több felhasználói fiók van egy tipikus rendszerben, köztük számos, a rendszerszolgáltatásra jellemző fiók, de ebben a példában úgy teszünk, mintha csak öt felhasználó van.)

Az / etc / passwd fájl minden sorának harmadik mezője az UID (felhasználói azonosító szám), ezért az egyes felhasználónév és felhasználói azonosító szám megjelenítéséhez használja a következő parancsot:

… amely például a következőket adja ki:

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

Mint láthatja, a kimenet alapértelmezés szerint elválasztva, a bemenethez megadott elválasztó karakterrel. Ebben az esetben ez a kettőspont karakter (“:”). Megadhat egy másik elválasztót a bemenethez és a kimenethez. Tehát, ha az előző parancsot akarja futtatni, de a kimenetet szóköz határolja, használhatja a következő parancsot:

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

De mi van, ha azt szeretné, hogy a kimenetet tabulátor határolja ? A tabulátor karakter megadása a parancssorban kissé bonyolultabb, mert nem nyomtatható karakter. A parancssorban való megadásához “meg kell védenie” a héjatól. Ez másképp történik, attól függően, hogy melyik héjat ” újra használjuk, de a Linux alapértelmezett shelljében (bash) megadhatjuk a tabulátor karakterét a $ “\ t” karakterrel. Tehát a következő parancs:

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

… például a következőket adja ki:

root0daemon1bin2sys3chope1000

Példák

cut -c 3 file.txt

Adja meg a file.txt fájl minden sorának harmadik karakterét, a többit kihagyva.

cut -c 1-3 file.txt

A fájl.txt fájl minden sorának első három karakterét adja ki, a többit kihagyva.

cut -c -3 file.txt

Ugyanaz, mint a fenti parancsot. Írja ki a file.txt minden sorának első három karakterét.

cut -c 3- file.txt

A harmadikat adja ki a file.txt fájl minden sorának utolsó karakterén keresztül, kihagyva az első két karakter.

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

Adja ki az / etc / passwd fájl első mezőjét, ahol a mezőket kettőspont határolja (“:”). Az / etc / passwd első mezője a felhasználónév, így ez a parancs a passwd fájl minden felhasználónevét kiadja.

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

Az első és a hatodik mező kiadása, kettősponttal határolva, minden bejegyzés az / etc / passwd fájlban, amely a / bin / bash-t írja be bejelentkezési héjként. Ez a parancs kiadja minden olyan felhasználó felhasználónevét és otthoni könyvtárát, amelynek bejelentkezési héja a / bin / bash.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük