logo

comanda cut în Linux cu exemple

Comanda cut în linux este o comandă pentru tăierea secțiunilor din fiecare linie de fișiere și scrierea rezultatului în ieșirea standard. Poate fi folosit pentru a tăia părți dintr-o linie după poziție, caracter și câmp. Comanda de tăiere taie o linie și extrage textul. Este necesar să specificați o opțiune cu o comandă, altfel dă o eroare. Dacă sunt furnizate mai multe nume de fișier, datele din fiecare fișier nu sunt precedate de numele acestuia.

Cuprins



Sintaxa comenzii cut

Sintaxa de bază acut>comanda este:

cut OPTION... [FILE]...>

Unde

`OPTION`> specifică comportamentul dorit



` FILE> `>reprezintă fișierul de intrare.

Notă : DacăFILE>nu este specificat, ` cut`> citește de la intrarea standard (stdin).

Opțiuni disponibile în comanda cut

Iată o listă cu opțiunile cele mai frecvent utilizate cu ` cut`> comanda:



Opțiune

Descriere

-b, –bytes=LIST

Selectează numai octeții specificați înLIST>(de exemplu.,-b 1-3,7>).

-c, –caractere=LISTA

Selectează numai caracterele specificate înLIST>(de exemplu.,-c 1-3,7>).

-d, –delimiter=DIVIDE

UtilizăriDELIM>ca caracter delimitator de câmp în loc de caracterul tabulator.

-f, –câmpuri=LIS

Selectează numai câmpurile specificate înLIST>, separate prin caracterul delimitator (implicit este tab).

-n

Nu împărțiți caractere pe mai mulți octeți (niciun efect decât dacă-b>sau-c>este specificat).

-completa

Inversați selecția câmpurilor/caracterelor. Tipăriți câmpurile/caracterele neselectate.

Exemple practice de comandă tăiat

Să luăm în considerare două fișiere cu nume stat.txt și capital.txt conține 5 nume ale statelor și, respectiv, capitalelor indiene.

$ cat state.txt Andhra Pradesh Arunachal Pradesh Assam Bihar Chhattisgarh>

Fără nicio opțiune specificată, afișează o eroare.

  $ cut state.txt   cut: you must specify a list of bytes, characters, or fields Try 'cut --help' for more information.>

Extrage octeți specifici (-b>) Folosind comanda cut

-b(octet): Pentru a extrage octeții specifici, trebuie să urmați opțiunea -b cu lista de numere de octeți separate prin virgulă. Intervalul de octeți poate fi specificat și folosind cratima (-). Este necesar să specificați lista de numere de octeți, altfel dă eroare.

File și spații înapoi sunt tratate ca un caracter de 1 octet.

Lista fără intervale :

cut -b 1,2,3 state.txt>
listă fără interval

listă fără interval

Lista cu intervale:

cut -b 1-3,5-7 state.txt>
lista cu interval

lista cu interval

Folosește un formular special pentru selectarea octeților de la începutul până la sfârșitul liniei:

Formă specială: Selectarea octeților de la începutul până la sfârșitul liniei

În aceasta, 1- indică de la primul octet până la sfârşitul octet al unei linii

cut -b 1- state.txt>
formă specială

formă specială cu opțiunea -b

În aceasta, -3 indică de la primul octet la al treilea octet al unei linii

cut -b -3 state.txt>
formă specială

opțiunea formă specială -b

Decupat după caracter (-c>) Folosind comanda cut

-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 un interval de numere separate prin cratima (-).

File și spații înapoi sunt tratate ca un personaj. Este necesar să specificați lista de numere de caractere, altfel dă eroare cu această opțiune.

Sintaxă:

cut -c [(k)-(n)/(k),(n)/(n)] filename>

Aici, k denotă poziţia de început a personajului şi n denotă poziția finală a caracterului în fiecare linie, dacă k și n sunt separate prin - altfel sunt doar poziția caracterului din fiecare linie din fișierul luat ca intrare.

Extrage caractere specifice:

cut -c 2,5,7 state.txt>
Extrage caractere specifice

Extrage caractere specifice

Deasupra comanda cut tipărește al doilea, al cincilea și al șaptelea caracter din fiecare linie a fișierului.

Extrage primele șapte caractere:

cut -c 1-7 state.txt>
Extrage primele șapte caractere

Extrage primele șapte caractere

Comanda de mai sus a tăiat imprimă primele șapte caractere ale fiecărei linii din fișier. Cut folosește o formă specială pentru selectarea caracterelor de la începutul până la sfârșitul rândului:

Formă specială: Selectarea caracterelor de la începutul până la sfârșitul rândului

cut -c 1- state.txt>
selectarea caracterelor de la începutul până la sfârșitul rândului

selectând caractere de la începutul până la sfârșitul rândului folosind opțiunea -c

Comanda de mai sus se tipărește de la primul caracter până la sfârșit. Aici la comandă este specificată doar poziția de pornire, iar poziția de sfârșit este omisă.

cut -c -5 state.txt>
selectând caractere de la începutul până la sfârșitul rândului folosind opțiunea -c

selectând caractere de la începutul până la sfârșitul rândului folosind opțiunea -c

Comanda de mai sus imprimă poziția de pornire la al cincilea caracter. Aici poziția de pornire este omisă și este specificată poziția de sfârșit.

Tăiat după câmp (-f>) Folosind comanda cut

-f (câmp): -c opțiunea este utilă pentru linii cu lungime fixă. Majoritatea fișierelor Unix nu au linii cu lungime fixă. Pentru a extrage informațiile utile, trebuie să tăiați după câmpuri și nu pe coloane. Lista câmpurilor cu numărul specificat trebuie să fie separate prin virgulă. Intervalele nu sunt descrise cu opțiunea -f . a tăia utilizări fila ca delimitator de câmp implicit, dar poate funcționa și cu alt delimitator prin utilizarea -d opțiune.

Notă: Spațiul nu este considerat delimitator în UNIX.

Sintaxă:

cut -d 'delimiter' -f (field number) file.txt>

Extrage primul câmp:

Ca în dosar stat.txt câmpurile sunt separate prin spațiu dacă opțiunea -d nu este folosită, atunci se tipărește întreaga linie:

cut -f 1 state.txt>
Extrageți primul câmp folosind opțiunea -f

Extrageți primul câmp folosind opțiunea -f

Dacă ` -d` este folosită opțiunea, atunci a considerat spațiu ca separator sau delimitator de câmp:

cut -d ' ' -f 1 state.txt>
spațiu ca separator sau delimitator de câmp

spațiu ca separator sau delimitator de câmp

Extrageți câmpurile de la 1 la 4:

Comanda imprimă câmpul de la prima până la a patra din fiecare linie din fișier.

cut -d ' ' -f 1-4 state.txt>

Comandă imprimă câmpul de la primul la al patrulea

Comandă imprimă câmpul de la primul la al patrulea

Ieșire complement (--complement>) Folosind comanda cut

-completa: După cum sugerează și numele, completează rezultatul. Această opțiune poate fi utilizată în combinație cu alte opțiuni fie cu -f sau cu -c .

cut --complement -d ' ' -f 1 state.txt>
--completa

-completa

cut --complement -c 5 state.txt>

--completa

-completa

Delimitator de ieșire (--output-delimiter>) Folosind comanda cut

-delimitator-ieșire: În mod implicit, delimitatorul de ieșire este același cu delimitătorul de intrare pe care îl specificăm în tăiere -d opțiune. Pentru a modifica delimitatorul de ieșire, utilizați opțiunea –output-delimiter=delimitator .

cut -d ' ' -f 1,2 state.txt --output-delimiter='%'>

2024-02-16_13-18

Aici comanda cut modifică delimitatorul (%) în ieșirea standard între câmpurile, care este specificată folosind opțiunea -f.

Versiunea de afișare (--version>) Folosind comanda cut

-versiune: Această opțiune este folosită pentru a afișa versiunea de tăiere care rulează în prezent pe sistemul dumneavoastră.

cut --version>

afișați versiunea comenzii de tăiere

afișați versiunea comenzii de tăiere

Cum se folosește coada cu țevi (|) în comanda tăiat

Comanda cut poate fi conectată cu multe alte comenzi ale Unix. În următorul exemplu de ieșire a lui pisică comanda este dată ca intrare la a tăia comanda cu -f opțiunea de a sorta numele statelor care provin din fișierul state.txt în ordine inversă.

cat state.txt | cut -d ' ' -f 1 | sort -r>
folosind coada cu teava (|) in comanda de taiere

folosind coada cu teava (|) in comanda de taiere

De asemenea, poate fi racordat cu unul sau mai multe filtre pentru procesare suplimentară. Ca și în exemplul următor, folosim comanda cat, head și cut și a cărei 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.txt>

redirecționarea ieșirii în fișiere diferite

port de ascultare

redirecționarea ieșirii în fișiere diferite

Întrebări frecvente privind comanda cut în Linux – Întrebări frecvente

Cum folosesc cut> comandă pentru a extrage anumite coloane dintr-un fișier?

Exemplu: pentru a extrage prima și a treia coloană dintr-un fișier CSV numit ` data.csv`> .

cut -d',' -f1,3 data.csv>

Pot folosi cut> pentru a extrage o serie de caractere din fiecare linie?

Da, poti. Pentru a extrage caracterele de la 5 la 10 din fiecare linie a unui fișier numittext.txt>.

cut -c5-10 text.txt>

Cum pot schimba delimitatorul folosit de cut> comanda?

Folosiți ` -d`> opțiune urmată de caracterul delimitator. De exemplu, pentru a folosi două puncte (:>) ca delimitator.

cut -d':' -f1,3 data.txt>

Este posibil de utilizat cut> pentru a extrage câmpuri în funcție de poziția caracterului?

Da, puteți specifica pozițiile caracterelor cu ` -c`> opțiune. De exemplu, pentru a extrage caracterele de la 1 la 5 și de la 10 la 15 din fiecare rând.

cut -c1-5,10-15 data.txt>

Cum folosesc cut> pentru a extrage câmpuri pe baza unui anumit delimitator și a le stoca într-un fișier nou?

Pentru a extrage câmpuri separate prin virgule și a le stoca într-un fișier nou numit ` output.tx> t`>

cut -d',' -f1,3 data.csv>output.txt>

Concluzie

În acest articol am discutat despre ` cut`> comandă în Linux, care este un instrument versatil pentru extragerea anumitor secțiuni din fișiere pe baza poziției octeților, caracterului sau câmpului. Se taie linii de text și scoate datele extrase. Eșecul de a specifica o opțiune cucut>comanda duce la o eroare. Pot fi procesate mai multe fișiere, dar rezultatul nu include numele fișierelor. Opțiuni precum ` -b`> , ` -c`> , și ` -f`> permite extragerea după octet, caracter și, respectiv, câmp. The--complement>opțiunea inversează selecția, imprimă ceea ce nu este selectat și--output-delimiter>modifică delimitatorul de ieșire. Comanda include, de asemenea, opțiuni pentru afișarea versiunii și poate fi utilizată în combinație cu alte comenzi prin conducte pentru procesare suplimentară.

?list=PLqM7alHXFySFc4KtwEZTANgmyJm3NqS_L