Comanda cut în UNIX este o comandă pentru tăierea secțiunilor din fiecare linie de fișiere și scrierea rezultatului la ieșirea standard. Poate fi folosit pentru a tăia părți ale unei linii după poziția octetului, caracterul și câmpul. Practic comanda de tăiere feliază o linie și extrage textul. Este necesar să specificați opțiunea cu comandă, altfel dă eroare. Dacă este furnizat mai mult de un nume de fișier, atunci datele din fiecare fișier nu sunt precedate de numele acestuia.
Sintaxă:
cut OPTION... ...
Să luăm în considerare două fișiere cu numele state.txt și capital.txt conține 5 nume ale statelor indiene și majuscule, respectiv.
$ cat state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Fără nicio opțiune specificată afișează eroare.
$ cut state.txtcut: you must specify a list of bytes, characters, or fieldsTry "cut --help" for more information.
Opțiuni și descrierea lor cu exemple:
1. -b (octet): Pentru a extrage octeții specifici, trebuie să urmați opțiunea -b cu lista numerelor de octeți separate prin virgulă. Gama de octeți poate fi, de asemenea, specificată folosind cratima (-). Este necesar să specificați lista numerelor de octeți, altfel dă erori. Filele și backspaces sunt tratate ca un caracter de 1 octet.
Folosește un formular special pentru selectarea octeților de la începutul până la sfârșitul liniei:
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 (coloană): Pentru a tăia după caracter utilizați opțiunea -c. Aceasta selectează caracterele date opțiunii -c. Aceasta poate fi o listă de numere separate prin virgulă sau o gamă de numere separate prin cratimă (-). Filele și backspaces-urile sunt tratate ca un personaj. Este necesar să specificați o listă de numere de caractere, altfel dă erori cu această opțiune.
Sintaxă:
$cut -c filename
Aici, k denotă poziția inițială a caracterului și n denotă poziția finală a caracterului în fiecare linie, dacă k și n sunt separate prin „-” în caz contrar, acestea sunt doar poziția caracterului din fiecare linie din fișierul luat ca intrare.
$ cut -c 2,5,7 state.txtnrrahsmirhti
Comanda de tăiere de mai sus imprimă al doilea, al cincilea și al șaptelea caracter din fiecare linie a fișierului.
$ cut -c 1-7 state.txtAndhraArunachAssamBiharChhatti
Comanda de tăiere de mai sus tipărește primele șapte caractere din fiecare linie din fișier.
Cut folosește un formular special pentru selectarea caracterelor de la începutul până la sfârșitul liniei:
$ 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 (câmp): opțiunea -c este utilă pentru liniile cu lungime fixă. Majoritatea fișierelor unix nu au corecții- linii de lungime. Pentru a extrage informațiile utile, trebuie să le tăiați mai degrabă pe câmpuri decât pe coloane. Lista specificațiilor numărului de câmpuri marcat trebuie să fie separat prin virgulă. Intervalele nu sunt descrise cu opțiunea -f. cut folosește fila ca delimitator de câmp implicit, dar poate funcționa și cu alt delimitator folosind opțiunea -d.
Notă: Spațiul nu este considerat ca delimitator în UNIX.
Sintaxă:
$cut -d "delimiter" -f (field number) file.txt
La fel ca în fișierul state.txt câmpurile sunt separate de spațiu dacă opțiunea -d nu este utilizată, atunci se imprimă întreaga linie:
$ cut -f 1 state.txtAndhra PradeshArunachal PradeshAssamBiharChhattisgarh
Dacă este utilizată opțiunea -d, atunci consideră spațiu ca separator de câmp sau delimitator:
$ 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. –Complement: După cum sugerează și numele, acesta completează rezultatul. Această opțiune poate fi utilizată în combinație cu alte opțiuni fie cu -f, fie cu -c.
5. –Output-delimiter: În mod implicit, delimitatorul de ieșire este același cu delimitatorul de intrare pe care îl specificăm în opțiunea tăiat cu -d. Pentru a schimba delimitatorul de ieșire utilizați opțiunea –output-delimiter = ”delimitator”.
$ cut -d " " -f 1,2 state.txt --output-delimiter="%"Andhra%PradeshArunachal%PradeshAssamBiharChhattisgarh
Aici comanda de tăiere modifică delimitatorul (%) în ieșirea standard între câmpuri care sunt specificate utilizând opțiunea -f.
6. –Versiune: Această opțiune este utilizată pentru a afișa versiunea de tăiere care rulează în prezent pe sistemul dvs.
$ 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.
Aplicații ale comenzii de tăiere
1. Cum se folosește coada cu țevi (|): Comanda de tăiere poate fi canalizată cu multe alte comenzi din unix. În exemplul următor, ieșirea comenzii cat este dată ca intrare la comanda de tăiere cu opțiunea -f pentru a sorta numele stărilor provenite din fișierul state.txt în ordine inversă.
$ cat state.txt | cut -d " " -f 1 | sort -rChhattisgarhBiharAssamArunachalAndhra
Poate fi, de asemenea, conectat cu unul sau mai multe filtre pentru procesare suplimentară. Ca în exemplul următor, folosim comanda cat, head și cut și a căror ieșire este stocată în numele fișierului list.txt folosind directiva (>).
$ cat state.txt | head -n 3 | cut -d " " -f 1 > list.txt$ cat list.txtAndhraArunachalAssam
Vă mulțumim Saloni Gupta pentru că a oferit mai multe exemple.