Linux cut parancs
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:
- felhasználónév
- jelszó (titkosítva x-ként jelenik meg)
- felhasználói azonosító száma (UID)
- Csoport azonosító száma (GID)
- Megjegyzés mező (az ujjparancs által használt)
- Saját könyvtár
- 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.