Sistemele de operare bazate pe Linux oferă multe utilitare de procesare a textului pe linia de comandă pe care le puteți utiliza în rutina dvs. de zi cu zi. Comanda cut este un astfel de utilitar de manipulare a textului care utilizează delimitatori, octeți, câmpuri și coloane pentru a prelua un șir necesar dintr-o bază de date cu fișiere plat sau dintr-o linie.
Deoarece o bază de date cu fișiere plat nu are o relație structurală și înregistrările sunt separate cu ajutorul delimitatorilor, cut este un instrument ideal pentru extragerea caracterelor sau octeților de informații. Acest articol discută în detaliu comanda cut și demonstrează câteva exemple practice cu diferite opțiuni de filtrare pentru a începe să folosiți instrumentul.
Prezentare generală a comenzii tăiere
cut folosește următoarea sintaxă de bază:
a tăia
Puteți, de asemenea, să îl conectați cu alte comenzi, după cum urmează:
ecou „șir_de_caractere” | a tăia
Vă rugăm să rețineți că absența oricărei opțiuni generează o eroare. Iată câteva steaguri pe care le puteți folosi cu cut pentru a invoca diferitele sale funcții:
Opțiune | Descriere |
---|---|
-b | Tăiere în funcție de poziția octetului |
-c | Tăieri după poziția caracterului |
-d | Extrage șirul folosind delimitatorul specificat cu opțiunea de câmp (-f). |
-f | Extrase după un câmp specificat |
-s | Extrase numai pentru delimitatori |
--completa | Tipăriți rezultatul, cu excepția câmpului pe care l-ați specificat |
--output-delimiter | Înlocuiți delimitatorul existent cu cel specificat |
Iată câteva exemple de comandă de tăiere care vă vor ajuta să înțelegeți mai bine instrumentul și funcțiile sale.
1. Extrageți anumite caractere dintr-un șir
Folosește -b opțiunea de a prelua șiruri de caractere după numărul lor de octeți, după cum urmează:
ecou „Bună lume” | tăiat -b 1,2,3,5,8,9
Ieșire:
Heloor
De asemenea, puteți specifica o cale de fișier în loc de un șir:
cut -b 1,2,3,4,5 filename.txt
Sau puteți extrage caractere în funcție de poziția lor în text. Folosește -c opțiunea urmată de secvența/ordinea caracterelor pe care trebuie să le obțineți după cum urmează:
ecou „Bună lume” | tăiat -c 1,2,3,5,6,8,10,11
Ieșire:
Salut bătrâne
În mod similar, pentru a prelua câmpuri sau coloane dintr-o bază de date cu fișiere plat, utilizați comanda cut cu -f opțiunea flag:
cut -f 3 database.txt
2. Tăiați intervalul de octeți sau caractere
De asemenea, puteți utiliza -b marcați cu comanda cut pentru a extrage și tipări mai multe intervale de octeți, după cum urmează:
cut -b 1-7,16-23 database.txt
Puteți defini intervalul de preluare a caracterelor folosind -c steag după cum urmează:
cut -c 1-7,16-23 database.txt
3. Extrageți text din pozițiile de început sau de sfârșit
Folosește -cn- opțiunea de a extrage text de la al n-lea caracter până la sfârșitul rândului, unde n este indexul unui caracter din șir.
De exemplu, pentru a extrage șirul începând de la al șaselea caracter până la sfârșitul rândului:
cut -c6- database.txt
Sau utilizați următoarea comandă pentru a prelua de la început până la ultimul m caractere din fisier:
cut -c-8 database.txt
4. Tăiați mai multe câmpuri dintr-un fișier
De asemenea, puteți imprima mai multe câmpuri dintr-un fișier folosind -f steag.
cut -f 1,2 database.txt
Ieșire:
NUME VARSTA
Ioan 20
Lisa 24
Jack 18
Bruce 23
Nancy 19
5. Extrageți text folosind delimitatori
Puteți folosi -d flag pentru a specifica delimitatorul cu -f opțiune. Delimitatorul specifică caracterul folosit pentru a separa câmpurile dintr-un fișier text.
De exemplu, pentru a extrage prima coloană a /etc/passwd fișier, utilizați două puncte (:) ca delimitator:
cut -d ‘:’ -f 1 /etc/passwd
În mod similar, valoarea delimitatorului din fluxul de text dat este un singur spațiu:
echo „1% din 1%” | cut -d ' ' -f 2,3
Ieșire:
1% din
6. Schimbați delimitatorul de ieșire pentru afișare
The --output-delimiter flag adaugă flexibilitate la ieșirea comenzii de tăiere. De exemplu, puteți utiliza steag pentru a afișa rezultatul într-o linie separată folosind $’\n’ valoare (linie nouă), după cum urmează:
grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'\n'
Ieșire:
alice
Alice
/bin/sh
Mai mult, puteți înlocui, de asemenea, un delimitator al unui fișier de intrare cu delimitatorul la alegere în ieșire, folosind --output-delimiter steag:
rădăcină grep /etc/passwd | cut -d ':' -f 1,6,7 --output-delimiter=@
Ieșire:
root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin
7. Tăiați câmpurile numai când o linie conține delimitator
Folosește -s flag pentru a extrage câmpuri numai atunci când liniile conțin un delimitator. De exemplu, următoarea comandă nu va prelua câmpul -f 1 cu excepția cazului în care are un delimitator de spațiu:
ecou „HelloWorld” | cut -d " " -f 1 -s
Dimpotrivă, comanda menționată mai jos va genera o ieșire, deoarece șirul conține delimitatorul specificat:
ecou „Bună lume” | cut -d " " -f 1 -s
Ieșire:
Buna ziua
În mod similar, puteți folosi orice alt caracter ca delimitator:
ecou „Bună ziua: Lumea” | cut -d ":" -f 2 -s
Ieșire:
Lume
8. Completați ieșirea comenzii
De asemenea, utilitarul de tăiere vă permite să imprimați toate câmpurile, cu excepția câmpului specificat. Folosește --completa opțiunea după cum urmează pentru a prelua toate detaliile contului de utilizator root, cu excepția coloanei a cincea:
grep „rădăcină” /etc/passwd | cut -d ':' --complement -s -f 5
Ieșire:
root: x: 0:0:/root:/bin/bash
În mod similar, în exemplul de mai jos, -f 1 parametrul trebuie să fie afișat Buna ziua text cu toate acestea, din cauza --completa opțiunea, imprimă doar restul.
ecou „Bună ziua întregii lumi” | cut -d " " -f 1 --complement
Ieșire:
către întreaga Lume
Cea mai bună parte este că puteți combina comanda cut cu ieșirea standard a altor comenzi Linux/Unix.
sed este un astfel de instrument de editare a textului pe care îl puteți folosi pentru a șterge, insera și înlocui textul. Îi puteți direcționa cu ușurință ieșirea către comanda cut.
În exemplul de mai jos, comanda grep ieșirea este transmisă la utilitarul sed care înlocuiește două puncte (:) cu o cratimă (-) și apoi, cut afișează câmpurile 1, 6 și 7 după cum urmează:
grep alice /etc/passwd | sed 's/:/-/g' | cut -d ' ' -f 1,5,7
Ieșire:
alice-x-1005-1008-Alice-/home/new/alice-/bin/sh
Lucrul cu text pe Linux Folosind cut
Comanda cut este un utilitar de linie de comandă flexibil și eficient pe care îl puteți utiliza în diferite cazuri de utilizare a manipulării textului. Utilizează operațiuni pentru a filtra textul din fișiere sau din datele de intrare standard. Utilitarul are, de asemenea, un avantaj care permite utilizatorilor să limiteze textul pe care doresc să-l afișeze și să adauge delimitatori la alegerea lor.
Cu toate acestea, această comandă are și unele limitări. Nu puteți folosi expresii regulate pentru a specifica un delimitator sau pentru a utiliza opțiuni de comandă de tăiere multiple concurente. Acest articol a acoperit exemple practice de nivel de bază până la avansat ale acestui utilitar pentru a ajuta începătorii să înțeleagă clar comenzile de manipulare a textului pe Linux.
Doriți să vă îmbunătățiți jocul Linux și să aflați mai multe despre manipularea textului? Iată primele cinci instrumente de linie de comandă Linux pentru a vă începe călătoria.
Citiți în continuare
- Linux
- Comenzi Linux
- Linux elementar
- Linux Bash Shell
Rumaisa este un scriitor independent la MUO. Ea a purtat multe pălării, de la un matematician la un pasionat de securitate a informațiilor, iar acum lucrează ca analist SOC. Interesele ei includ citirea și scrierea despre noile tehnologii, distribuțiile Linux și orice despre securitatea informațiilor.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Click aici pentru a te abona