![Comenzi rapide utile pentru linia de comandă Linux pe care ar trebui să le cunoașteți](/f/28d5eea8351ed022987fb20f8766693b.png?width=100&height=100)
În calitate de utilizatori Linux, interacționăm cu fișierele text în mod regulat. Una dintre operațiunile comune pe care le efectuăm asupra acestor fișiere este filtrarea textului. Linux oferă multe utilitare de linie de comandă pentru filtrarea textului, cum ar fi – grep, fgrep, sed, awk, iar lista poate continua.
Cu toate acestea, în acest ghid, vom discuta despre un alt utilitar de filtrare a textului numit a tăia, care este folosit pentru a elimina o anumită secțiune din linia de intrare. Comanda cut efectuează filtrarea în funcție de poziția octetului, caracter, câmp și delimitator.
În acest ghid pentru începători, vom afla despre comanda de tăiere cu exemple în linia de comandă Linux. După ce urmează acest ghid, utilizatorii liniei de comandă Linux vor putea folosi comanda cut eficient în viața lor de zi cu zi.
Sintaxa lui comanda de tăiere este la fel ca oricare altă comandă Linux:
$ tăiat... [FILE-1] [FILE-2]...
În sintaxa de mai sus, paranteza unghiulară (<>)
reprezintă argumentele obligatorii în timp ce paranteza pătrată
([])
reprezintă parametrii opționali.
Acum că suntem familiarizați cu sintaxa lui comanda de tăiere. În continuare, să creăm un fișier eșantion pe care să îl folosim ca exemplu:
$ cat file.txt.
The a tăia comanda ne permite să extragem textul pe baza poziției octetului folosind -b
opțiune.
Să folosim comanda de mai jos pentru a extrage primul octet din fiecare linie a fișierului:
$ cut -b 1 fișier.txt.
În acest exemplu, putem vedea că a tăia comanda arată doar primul caracter, deoarece toate caracterele au lungimea de un octet.
În exemplul anterior, am văzut cum să selectăm un singur octet din fișier. Cu toate acestea, comanda cut ne permite, de asemenea, să selectăm mai mulți octeți folosind virgulă.
Să folosim comanda de mai jos pentru a selecta primii patru octeți din fișier:
$ cut -b 1,2,3,4 file.txt.
În acest exemplu, am selectat octeții consecutivi, dar acest lucru nu este obligatoriu. Putem folosi orice poziție validă de octet cu a tăia comanda.
În exemplul anterior, am folosit virgule pentru a selecta octeți consecutivi. Cu toate acestea, această abordare nu este potrivită dacă dorim să selectăm un număr mare de octeți consecutiv. În astfel de cazuri, putem folosi cratima (-)
pentru a specifica intervalul de octeți.
Pentru a înțelege acest lucru, să folosim 1-12 ca un interval de octeți pentru a selecta primii doisprezece octeți din fiecare linie:
$ cut -b 1-12 fișier.txt.
Într-un mod similar, putem selecta și un interval de octeți din mijloc. De exemplu, comanda de mai jos selectează octeți din coloanele cu numere de la 17 la 30:
$ cut -b 17-30 file.txt.
Uneori, dorim să extragem tot textul dintr-o anumită poziție de octet. În astfel de cazuri, putem omite poziția octetului final.
De exemplu, putem folosi următoarea comandă pentru a imprima toți octeții începând de la poziția 17:
$ cut -b 17- file.txt
În comanda de mai sus, 17 reprezintă poziția octetului de pornire în timp ce cratima (-)
reprezintă sfârșitul liniei.
Într-un mod similar, putem specifica, de asemenea, numai poziția octetului final. De exemplu, comanda de mai jos tipărește toți octeții de la începutul liniei până la a 12-a coloană:
$ cut -b -12 fișier.txt.
În comanda de mai sus, cratima (-)
reprezintă începutul liniei, în timp ce 12 reprezintă poziția octetului de sfârșit.
În ultimele câteva secțiuni, am văzut cum să efectuăm extragerea textului pe baza poziției octeților. Acum, să vedem cum să efectuăm extragerea textului după poziția caracterului.
Pentru a realiza acest lucru, putem folosi -c
opțiunea de a tăia primul octet din următorul șir de mai mulți octeți:
$ echo école | tăiați -b 1.
În rezultatul de mai sus, putem vedea că, comanda cut arată un semn de întrebare în loc de caracter é
. Acest lucru se întâmplă deoarece încercăm să tipărim primul octet din caracterul cu mai mulți octeți.
Acum, să folosim -c
opțiunea de a tăia același caracter pe mai mulți octeți și de a observa rezultatul:
$ echo école | tăiați -c 1 é
În rezultatul de mai sus, putem vedea că acum comanda cut arată rezultatul așteptat.
Este important de reținut că nu toate versiunile comenzilor de tăiere acceptă caracterele multi-octeți. De exemplu, Ubuntu și derivatele sale nu acceptă caractere pe mai mulți octeți.
Pentru a înțelege acest lucru, să rulăm aceeași comandă pe Linux Mint care este derivat din Ubuntu:
Aici putem vedea că, a tăia comanda tratează la fel atât caracterele pe mai mulți octeți, cât și caracterele pe un singur octet. Prin urmare, nu generează rezultatul așteptat.
În mod implicit, a tăia comanda folosește a TAB caracter ca delimitator. Cu toate acestea, putem suprascrie acest comportament implicit folosind -d
opțiune.
De multe ori, -d
opțiunea este utilizată în combinație cu -f
opțiune care este utilizată pentru a selecta un anumit câmp.
Pentru a înțelege acest lucru, să folosim caracterul spațiu ca delimitator și să imprimăm primele două câmpuri folosind -f
opțiune:
$ cut -d " " -f 1,2 file.txt.
În exemplul de mai sus, am folosit virgula cu -f
opțiunea de a selecta mai multe câmpuri.
Uneori, dorim să tipărim toate caracterele, cu excepția câtorva. În astfel de cazuri, putem folosi --completa
opțiune. După cum sugerează și numele, această opțiune tipărește toate coloanele, cu excepția celor specificate.
$ cut -c 1 --complement file.txt.
În rezultatul de mai sus, putem vedea că --completa
opțiunea imprimă toate caracterele, cu excepția primului caracter.
Este important de reținut că, în acest exemplu, am folosit virgule pentru a selecta mai multe câmpuri. Cu toate acestea, putem folosi și celelalte intervale acceptate. Ne putem referi la primele exemple ale acestui tutorial pentru a înțelege mai multe despre intervale.
În acest ghid pentru începători, am discutat exemplele practice ale a tăia comandă cu filtrare de text pe baza poziției octetului, a caracterului și a delimitatorului.
Știți vreun alt exemplu cel mai bun al comenzii cut în Linux? Spune-ne opiniile tale în comentariile de mai jos.