A UNIX vágás parancs egy parancs, amely kivágja a szakaszokat a fájlok minden sorából, és az eredményt szabványos kimenetre írja. Használható egy vonal részeinek bájtpozíció, karakter és mező szerinti vágására. Alapvetően a cut parancs szeletel egy sort, és kivonja a szöveget. Az opciót meg kell adni a paranccsal, különben hibát ad. Ha egynél több fájlnév van megadva, akkor az egyes fájlok adatait nem előzi meg a fájlnevek.
Szintaxis:
cut OPTION... ...
Tekintsünk két olyan fájlt, amelyek neve state.txt és capital.txt tartalmaz 5 indiai állam nevét és nagybetűkkel.
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
A megadott opció nélkül hibát jelenít meg.
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "cut --help" for more information.
Beállítások és leírásuk példákkal:
1. -b (byte): A konkrét bájtok kibontásához kövesse a -b opciót, a vesszővel elválasztva a bájtok számát. A bájt tartomány a kötőjel (-) segítségével is meghatározható. Meg kell adni a bájtok számát, különben hibát ad. A lapokat és a visszalépéseket egy bájtos karakterként kezeljük.
Egy speciális formát használ a bájtok kiválasztásához a sor elejétől a sor végéig:
In this, 1- indicate from 1st byte to end byte of a line$ cut -b 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhIn this, -3 indicate from 1st byte to 3rd byte of a line$ cut -b -3 state.txtAndAruAssBihChh
2. -c (oszlop): Karakterek szerinti kivágáshoz használja a -c opciót. Ez kiválasztja a -c opciónak adott karaktereket. Ez lehet vesszővel elválasztott számok listája vagy kötőjellel (-) elválasztott számtartomány. A tabulátorokat és a visszalépéseket karakterként kezeljük. Meg kell adni a karakterek listáját, különben hibát okoz az opcióval.
Szintaxis:
$cut -c filename
Itt a k A karakter kezdőpozíciója és n az egyes sorokban a karakter végpontját jelöli, ha k és n elválasztva “-” karakterrel, különben csak a karakterek helye az egyes sorokban a bemenetként vett fájlból.
$ cut -c 2,5,7 state.txtnrrahsmirhti
A vágás felett a fájl minden sorából második, ötödik és hetedik karaktert nyomtat ki.
$ cut -c 1-7 state.txtAndhraArunachAssamBiharChhatti
A cut parancs felett a fájl minden egyes sorának első hét karakterét kinyomtatja.
A Cut egy speciális űrlapot használ a karakterek kiválasztásához a sor elejétől a végéig:
$ cut -c 1- state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarhAbove command prints starting from first character to end. Here in command only startingposition is specified and the ending position is omitted.$ cut -c -5 state.txtAndhrArunaAssamBiharChhatAbove command prints starting position to the fifth character. Here the starting positionis omitted and the ending position is specified.
3. -f (mező): -c opció fix hosszúságú vonalaknál hasznos. A legtöbb unix fájl nem rendelkezik fix- hosszúságú vonalak. A hasznos információk kibontásához oszlopok helyett mezőkre kell vágnia. A mezők felsorolása vesszővel kell elválasztani. A tartományokat a -f opcióval nem írják le. A cut alapértelmezett mezőhatárolóként használja a fület, de a -d opció használatával más határolóval is működhet.
Megjegyzés: A szóközt nem tekintjük elválasztónak a UNIX-ban.
Szintaxis:
$cut -d "delimiter" -f (field number) file.txt
A State.txt fájlhoz hasonlóan a mezőket is szóköz választja el, ha a -d opciót nem használjuk, akkor az egész sort kinyomtatja:
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Ha a -d opciót használjuk, akkor a teret mezőelválasztónak vagy elválasztónak tekintette:
$ cut -d " " -f 1 state.txtAndhraArunachalAssamBiharChhattisgarh
Command prints field from first to fourth of each line from the file.Command:$ cut -d " " -f 1-4 state.txtOutput:Andhra PradeshArunachal PradeshAssamBiharChhattisgarh
4. –Komplement: Ahogy a neve is sugallja, kiegészíti a kimenetet. Ez az opció használható más opciókkal kombinációban, akár -f vagy -c használatával.
5. –Output-delimiter: Alapértelmezés szerint a kimenet határolója megegyezik az input határolóval, amelyet a cut -d opcióval adunk meg. A kimeneti határoló megváltoztatásához használja az –output-delimiter = ”elválasztó” beállítást.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
Itt vágja le a parancsot a határoló (%) megváltoztatására a standard kimenet között mezők, amelyeket az -f opcióval adunk meg.
6. –Version: Ez az opció a rendszeren futó cut verzió megjelenítésére szolgál.
$ cut --versioncut (GNU coreutils) 8.26Packaged by Cygwin (8.26-2)Copyright (C) 2016 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later .This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.Written by David M. Ihnat, David MacKenzie, and Jim Meyering.
A kivágott parancs alkalmazásai
1. A farok használata csövekkel (|): A vágás parancs az unix számos más parancsával csövezhető. Az alábbi példában a cat parancs kimenetét adjuk meg a cut parancs -f opciójának bemeneteként az state.txt fájlból érkező állapotnevek fordított sorrendbe rendezéséhez.
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
Egy vagy több szűrővel is csövezhető a további feldolgozáshoz. A következő példához hasonlóan a cat, head and cut parancsot is használjuk, amelynek kimenetét a list.txt fájlnév tárolja a direktíva (>) használatával.
$ cat state.txt | head -n 3 | cut -d " " -f 1 > list.txt$ cat list.txtAndhraArunachalAssam
Köszönöm Saloni Gupta, hogy további példákat közölt.