Linux naredba za rezanje

izrezati naredbu

Na Nalik Unixu operativni sustavi, izrezati naredba uklanja ('izrezuje') odjeljke svakog retka a datoteka ili datoteke.

Ova stranica pokriva GNU / Linux inačica izrezati .

Sintaksa

cut  OPTION  ... [  FILE  ]...

Opcije

-b , - bajtova = POPIS Odaberite samo bajtova iz svakog retka kako je navedeno u POPIS . POPIS određuje bajt, skup bajtova ili raspon bajtova; vidjeti Određivanje POPIS ispod.
-c , --znakovi = POPIS Odaberite samo znakove iz svakog retka kako je navedeno u POPIS . POPIS određuje znak, skup znakova ili raspon znakova; vidjeti Određivanje POPIS ispod.
-d , --delimiter = DELIM koristiti karakter DELIM umjesto a tab za polje graničnik .
-f , --polja = POPIS odaberite samo ova polja u svakom retku; također ispisati bilo koji redak koji ne sadrži znak za razdvajanje, osim ako -s navedena je opcija. POPIS određuje polje, skup polja ili raspon polja; vidjeti Određivanje POPIS ispod.
-n Ova se opcija zanemaruje, ali je uključena zbog kompatibilnosti.
--upotpuniti, dopuna dopunjuju skup odabranih bajtova, znakova ili polja.
-s , --samo ograničeno ne ispisujte retke koji ne sadrže graničnike.
--izlaz-graničnik = NIZ koristiti NIZ kao graničnik izlaza niz . Zadana je upotreba graničnika ulaza.
--Pomozite Prikažite poruku pomoći i izađite.
--verzija izlaz podataka o verziji i izlaz.

Napomene o korištenju

Pri zazivanju izrezati , koristiti -b , -c , ili -f opcija, ali samo jedna od njih.

Ako ne DATOTEKA je navedeno, izrezati čita iz standardni ulaz .

Određivanje POPIS

Svaki POPIS sastoji se od cijelog broja, raspona cijelih brojeva ili više cjelobrojnih raspona odvojenih zarezima. Odabrani ulaz zapisuje se istim redoslijedom kojim se čita i zapisuje se za izlaz točno jednom. Asortiman se sastoji od:

N N bajt, znak ili polje, odbrojano od 1 .
N - od N bajt, znak ili polje do kraja retka.
N - M od N th do M bajt, znak ili polje (uključujući).
- M od prvog do M bajt, znak ili polje.

Na primjer, recimo da imate datoteku s imenom data.txt koji sadrži sljedeći tekst:

one two three four five alpha beta gamma delta epsilon

U ovom primjeru svaka od ovih riječi odvojena je znakom kartice, a ne razmacima. Znak kartice zadani je graničnik za izrezati , tako da će prema zadanim postavkama polje smatrati nečim što je razdvojeno karticom.

Da biste 'izrezali' samo treće polje svakog retka, upotrijebite naredbu:

cut -f 3 data.txt

... koji će dati sljedeće:

three gamma

Ako umjesto toga želite 'izrezati' samo polje od drugog do četvrtog u svakom retku, upotrijebite naredbu:

cut -f 2-4 data.txt

... koji će dati sljedeće:

two three four beta gamma delta

Ako želite 'izrezati' samo prvo-drugo-drugo i četvrto-peto polje svakog retka (izostavljajući treće polje), upotrijebite naredbu:

cut -f 1-2,4-5 data.txt

... koji će dati sljedeće:

one two four five alpha beta delta epsilon

Ili, recimo da želite treće polje i svako polje nakon njega, izostavljajući prva dva polja. U ovom slučaju možete upotrijebiti naredbu:

cut -f 3- data.txt

... koji će dati sljedeće:

three four five gamma delta epsilon

Određivanje raspona s POPIS odnosi se i na izrezati znakovi ( -c ) ili bajtova ( -b ) iz crte. Na primjer, za izlaz samo trećeg do dvanaestog znaka svakog retka data.txt , upotrijebite naredbu:

cut -c 3-12 data.txt

... koji će dati sljedeće:

neki ključevi ne rade na prijenosnom računaru hp
e two thre pha beta g

Imajte na umu da je 'razmak' između svake riječi zapravo jedan znak kartice, tako da oba izlazna retka prikazuju deset znakova: osam alfanumeričkih znakova i dva znaka kartice. Drugim riječima, izrezati izostavlja prva dva znaka svakog retka, brojeći kartice kao po jedan znak; izbacivanje znakova od tri do dvanaest, brojeći kartice po jedan znak; i izostavljanje bilo kakvih znakova nakon dvanaestog.

Brojanje bajtova umjesto znakova rezultirat će istim izlazom u ovom slučaju, jer u ASCII - kodirana tekstualna datoteka, svaki znak predstavljen je jednim bajtom (osam bitova) podataka. Dakle, naredba:

cut -b 3-12 data.txt

... hoće, za našu datoteku data.txt , daju potpuno isti izlaz:

e two thre pha beta g

Određivanje razdjelnika osim kartice

Znak kartice zadani je graničnik koji izrezati koristi za određivanje što predstavlja polje. Dakle, ako su polja vaše datoteke već razgraničena karticama, ne morate navesti drugačiji znak za razdvajanje.

Međutim, kao graničnik možete navesti bilo koji znak. Na primjer, datoteka / etc / passwd sadrži podatke o svakom korisniku u sustavu, po jednog korisnika u retku, a svako informacijsko polje odvojeno je dvotočkom (' : '). Na primjer, linija / etc / passwd za korijen korisnik može izgledati ovako:

root:x:0:0:root:/root:/bin/bash 

Ova polja sadrže sljedeće podatke, sljedećim redoslijedom, odvojene znakom dvotačke:

  1. Korisničko ime
  2. Lozinka (prikazana kao x ako šifrirano )
  3. Korisnički ID broj (UID)
  4. ID broja grupe (GID)
  5. Polje za komentar (koristi se naredbom finger)
  6. Početna mapa
  7. Ljuska

Korisničko ime je prvo polje na liniji, pa za prikaz svakog korisničkog imena u sustavu upotrijebite naredbu:

cut -f 1 -d ':' /etc/passwd

... koji će iznijeti, na primjer:

root daemon bin sys chope

(U tipičnom sustavu postoji mnogo više korisničkih računa, uključujući mnoge račune specifične za sistemske usluge, ali u ovom ćemo se primjeru pretvarati da postoji samo pet korisnika.)

Treće polje svakog retka u / etc / passwd datoteka je UID (korisnički ID broj), pa za prikaz svakog korisničkog imena i korisničkog ID broja upotrijebite naredbu:

cut -f 1,3 -d ':' /etc/passwd

... koji će iznijeti sljedeće, na primjer:

root:0 daemon:1 bin:2 sys:3 chope:1000

Kao što vidite, izlaz će prema zadanim postavkama biti razgraničen, koristeći isti znak za razdvajanje naveden za ulaz. U ovom slučaju to je znak dvotačke (' : '). Međutim, možete navesti drugačiji graničnik za ulaz i izlaz. Dakle, ako ste željeli pokrenuti prethodnu naredbu, ali imate izlaz razgraničen razmakom, možete upotrijebiti naredbu:

cut -f 1,3 -d ':' --output-delimiter=' ' /etc/passwd
root 0 daemon 1 bin 2 sys 3 chope 1000

Ali što ako želite da izlaz bude ograničen karticom? Navođenje znaka kartice na naredbenom retku malo je složenije, jer je to znak koji se ne može ispisati. Da biste ga odredili u naredbenom retku, morate ga 'zaštititi' od ljuske. To se radi drugačije, ovisno o tome koju ljusku koristite, ali u zadanoj ljusci Linuxa ( bash ), možete odrediti znak kartice s $ ' t' . Dakle, naredba:

cut -f 1,3 -d ':' --output-delimiter=$'	' /etc/passwd

... će iznijeti sljedeće, na primjer:

root 0 daemon 1 bin 2 sys 3 chope 1000

Primjeri

cut -c 3 file.txt

Iznesite treći znak svakog retka datoteke file.txt , izostavljajući ostale.

cut -c 1-3 file.txt

Iznesite prva tri znaka iz svakog retka datoteke file.txt , izostavljajući ostalo.

cut -c -3 file.txt

Isto kao i gornja naredba. Iznesite prva tri znaka iz svakog retka file.txt .

cut -c 3- file.txt

Iznesite treći kroz posljednje znakove svakog retka datoteke file.txt , izostavljajući prva dva znaka.

cut -d ':' -f 1 /etc/passwd

Iznesite prvo polje datoteke / etc / passwd , gdje su polja ograničena dvotočkom (' : '). Prvo polje / etc / passwd je Korisničko ime , tako da će ova naredba ispisati svako korisničko ime u passwd datoteka.

grep '/bin/bash' /etc/passwd | cut -d ':' -f 1,6

Iznesite prvo i šesto polje, odvojeno dvotačkom, bilo kojeg unosa u / etc / passwd datoteka koja navodi / bin / bash kao ljuska za prijavu. Ova naredba će prikazati korisničko ime i početni direktorij bilo kojeg korisnika čiji prijaviti se ljuska je / bin / bash .

zahvat - Filtrirajte tekst koji odgovara regularnom izrazu.
zalijepiti - Spoji odgovarajuće retke datoteka.