Android

Linux cut naredba s primjerima

autocad_2011_11_surfaces_solids_demo_us.wmv

autocad_2011_11_surfaces_solids_demo_us.wmv

Sadržaj:

Anonim

U Linux i Unix sustavima dostupno je mnogo uslužnih programa koji vam omogućuju obradu i filtriranje tekstualnih datoteka. Izrezivanje je uslužni program naredbenog retka koji vam omogućuje izrezivanje dijelova redaka iz određenih datoteka ili podataka u cjevovodima i ispis rezultata na standardni izlaz. Može se koristiti za izrezivanje dijelova crte prema razgraničaru, položaju bajta i znaku.

U ovom ćemo vam vodiču pokazati kako koristiti Linux cut naredbu kroz praktične primjere i detaljna objašnjenja najčešćih opcija rezanja.

Kako se koristi naredba za rezanje

Sintaksa naredbe cut je sljedeća:

cut OPTION……

Kada koristite naredbu cut morate koristiti jednu i samo jednu od sljedećih opcija:

  • -f ( --fields=LIST ) - Odaberite specificiranjem polja, skupa polja ili raspona polja. Ovo je najčešće korištena opcija. -b (- --bytes=LIST ) - Odaberite specificiranjem bajta, skupa bajtova ili raspona bajtova. -c ( --characters=LIST ) - Odaberite navođenjem znaka, skupa znakova ili raspona znakova.

Ostale mogućnosti su:

  • -d ( --delimiter ) - Navedite razdjelnik koji će se upotrebljavati umjesto zadanog razdjelnika "TAB". - dopuniti - nadopuniti izbor. Kada koristite ovu opciju, rez će prikazati sve bajte, znakove ili polja osim odabranih. -s (- --only-delimited ) - prema zadanom rezu ispisat će se bilo koji redak koji ne sadrži znak s ograničenjem. Pri korištenju ove opcije rez neće ispisati linije koje ne sadrže razlučivače. --output-delimiter - zadano je korištenje ulaznog razdjelnika kao izlaznog razgraničara. Ova vam opcija omogućuje da odredite drugačiji niz razlučivača.

Naredba cut može prihvatiti nula ili više ulaznih naziva FILE. Ako nije naveden FILE ili kad je FILE - , cut će očitati standardni unos.

Argument LIST-a koji se proslijedio opcijama -f , -b i -c može biti cijeli broj, više cjelobrojnih brojeva odvojenih zarezima, raspon cijelih brojeva ili više cjelobrojnih raspona razdvojenih zarezima. Svaki raspon može biti jedan od sljedećeg:

  • N nth polje, bajt ili znak, počevši od 1. N- od Nth polja, bajta ili znaka, do kraja retka. NM od N do M polja, bajta ili znaka. -M od prvog do Mth polja, bajta ili znaka.

Kako rezati po polju

Naredba Cut najčešće se koristi za prikaz odabranih polja iz svakog retka datoteke ili standardnog unosa. Ako nije navedeno, zadani razdjelnik je "TAB".

U niže navedenim primjerima upotrijebit ćemo sljedeću datoteku. Sva su polja odvojena tabulatorima.

test.txt

245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978

Za prikaz prvog i trećeg polja upotrijebili biste:

cut test.txt -f 1, 3

245:789 M:4540 535:763 M:3476

Ili ako želite prikazati od 1. do 4. polja:

cut test.txt -f -4

245:789 4567 M:4540 Admin 535:763 4987 M:3476 Sales

Kako izrezati na temelju razdjelnika

Da biste izrezali na osnovu razlučivača, upotrijebite opciju -d a zatim razdjelnik koji želite koristiti.

Na primjer da biste prikazali 1. i 3. polje koristeći ":" kao razgraničnik, otkucali biste:

cut test.txt -d ':' -f 1, 3

245:4540 Admin 01 535:3476 Sales 11

Možete koristiti bilo koji pojedinačni znak kao razgraničnik. U sljedećem primjeru znak s razmakom koristimo kao razdvajač i ispisujemo 2. polje:

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2

ipsum

Kako nadopuniti izbor

Za nadopunu popisa polja za odabir koristite opciju - --complement . Ovo će ispisati samo ona polja koja nisu odabrana s opcijom -f .

Sljedeća naredba ispisat će sva polja osim prvog i trećeg:

cut test.txt -f 1, 3 --complement

4567 Admin 01:10:1980 4987 Sales 11:04:1978

Kako odrediti izlazni razdjelnik

Za određivanje izlaznog razgraničitelja koristite opciju --output-delimiter . Na primjer, da postavite razlučivač izlaza na _ biste upotrijebili:

cut test.txt -f 1, 3 --output-delimiter='_'

245:789_M:4540 535:763_M:3476

Kako rezati po bajtovima i znakovima

Prije nego što nastavimo dalje, napravimo razliku između bajtova i znakova.

Jedan bajt je 8 bita i može predstavljati 256 različitih vrijednosti. Kad je uspostavljen ASCII standard, uzeo je u obzir sva slova, brojeve i simbole potrebne za rad s engleskim jezikom. Tablica znakova ASCII sadrži 128 znakova i svaki je znak predstavljen jednim bajtom. Kad su računala počela postati globalno popularna, tehnološke tvrtke počele su uvoditi nove kodne znakove za različite jezike i za jezike koji sadrže više od 256 znakova, jednostavno preslikavanje od 1 do 1 nije bilo moguće. To dovodi do različitih problema poput dijeljenja dokumenata ili pregledavanja web stranica, a potreban je i novi Unicode standard koji može podnijeti većinu svjetskih pisaćih sustava. UTF-8 je stvoren za rješavanje ovih problema. U UTF-8 nisu svi znakovi predstavljeni s 1 bajtom. Znakovi se mogu predstaviti s 1 bajtom do 4 bajta.

U slijedećim primjerima koristimo znak ü koji zauzima 2 bajta.

Upotrijebite opciju -b (- --bytes ) da biste odrezali odjeljak retka navođenjem položaja bajta.

Odaberite 5. bajt:

echo 'drüberspringen' | cut -b 5

b

Odaberite 5., 9. i 13. bajt:

echo 'drüberspringen' | cut -b 5, 9, 13

bpg

Odaberite raspon od 1. do 5. bajta:

echo 'drüberspringen' | cut -b 1-5

drüb

U vrijeme pisanja ovog članka verzija rezanog paketa u GNU coreutilsima nema mogućnost rezanja po znakovima. Kada koristite opciju -c rez se ponaša isto kao i kad koristite opciju -b .

Izrežite primjere

Naredba cut obično se koristi u kombinaciji s ostalim naredbama kroz cjevovod. Evo nekoliko primjera.

Nabavite popis svih korisnika

Izlaz naredbe getent passwd prolazi da se cut koja ispisuje prvu datoteku koristeći : kao razgraničnik.

getent passwd | cut -d ':' -f1

Pogledajte 10 najčešće korištenih naredbi

U sljedećem primjeru presjek se koristi za uklanjanje prvih 8 bajtova iz svakog retka izlaza naredbe history .

history | cut -c8- | sort | uniq -c | sort -rn | head

Zaključak

Do sad biste trebali dobro razumjeti kako koristiti Linux cut naredbu. Iako je vrlo korisno, naredba cut ima određena ograničenja. Ne podržava određivanje više znakova kao razdjelnika i ne podržava više decimetara.

rezni terminal