Android

Tr naredba u Linuxu s primjerima

Meteor: a better way to build apps by Roger Zurawicki

Meteor: a better way to build apps by Roger Zurawicki

Sadržaj:

Anonim

tr je uslužni program naredbenog retka u sustavima Linux i Unix koji prevodi, briše i istiskuje znakove sa standardnog ulaza, a rezultat zapisuje na standardni izlaz.

Naredba tr može izvoditi operacije poput uklanjanja ponovljenih znakova, pretvaranja velikih slova u mala slova i zamjene i uklanjanja osnovnih znakova. Obično se koristi u kombinaciji s drugim naredbama kroz cjevovod.

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

Kako koristiti tr naredbu

Sintaksa za naredbu tr je sljedeća:

tr OPTION… SET1

tr prihvaća dva skupa znakova, obično iste duljine i zamjenjuje znakove prvih skupova odgovarajućim znakovima iz drugog skupa.

SET je u osnovi niz znakova, uključujući i posebne znakove izbjegnute crte unazad.

U sljedećem primjeru tr će zamijeniti sve znakove sa standardnog unosa (linuxize) mapiranjem znakova iz prvog skupa s odgovarajućim onima iz drugog skupa.

echo 'linuxize' | tr 'lin' 'red'

Svaka pojava l zamjenjuje se s r , i s e i n s d :

reduxeze

Skup znakova također se može definirati pomoću raspona znakova. Na primjer, umjesto pisanja:

echo 'linuxize' | tr 'lmno' 'wxyz'

možeš koristiti:

echo 'linuxize' | tr 'ln' 'w-z'

Kada se koristi opcija -c ( --complement ), tr zamjenjuje sve znakove koji nisu u SET1.

U primjeru ispod svi znakovi osim „li“ bit će zamijenjeni posljednjim slovom iz drugog skupa:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

Kao što ste primijetili, izlazni izlaz ima još jedan vidljiviji znak od ulaza. To je zato što naredba echo ispisuje nevidljivi znak nove linije koji je također zamijenjen s y . Da biste odjeknuli niz bez novog retka, koristite opciju -n .

Opcija -d ( --delete ) govori tr za brisanje znakova navedenih u SET1. Prilikom brisanja znakova bez pritiskanja navedite samo jedan skup.

Naredba u nastavku uklonit će znakove l , i i z :

echo 'Linuxize' | tr -d 'liz'

Znak L se ne briše jer ulaz uključuje velika slova L dok je znak l u SET mala.

Lnuxe

Opcija -s ( --squeeze-repeats ) zamjenjuje niz ponavljanih pojava s znakovima postavljenim u posljednjem SET-u.

U sljedećem primjeru tr uklanja ponovljene znakove razmaka:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Kad se koristi SET2, redoslijed znakova naveden u SET1 zamjenjuje se SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

Opcija -t ( --truncate-set1 ) prisiljava tr da skraći SET1 na duljini SET2 prije daljnje obrade.

Prema zadanim postavkama, ako je SET1 veći od SET2 tr , ponovno će se koristiti zadnji znak SET2. Evo primjera:

echo 'Linux ize' | tr 'abcde' '12'

Izlaz pokazuje da se znak e iz SET1 podudara s najnovijim znakom SET2, a to je 2 :

Linux iz2

Sada koristite istu naredbu s opcijom -t :

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

Možete vidjeti da su posljednja tri znaka SET1 uklonjena. SET1 postaje 'ab', iste je dužine kao SET2 i ne vrši se nikakva zamjena.

Opcije kombiniranja

Naredba tr također vam omogućuje kombiniranje njezinih opcija. Na primjer, sljedeća naredba prvo zamjenjuje sve znakove osim i sa 0 a zatim stisne ponovljenih 0 znakova:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Tr Primjeri naredbi

U ovom ćemo dijelu prikazati nekoliko primjera uobičajenih upotreba naredbe tr .

Pretvorite mala slova u velika slova

Pretvaranje malih i malih slova u veliki ili obrnuti jedan je od tipičnih slučajeva upotrebe naredbe tr . odgovara svim malim slovima i odgovara svim velikim slovima.

echo 'Linuxize' | tr '' ''

LINUXIZE

Umjesto satova znakova, možete upotrijebiti i nizove:

echo 'Linuxize' | tr 'az' 'A-Z'

Da biste pretvorili velika slova u mala slova, jednostavno prebacite mjesta skupova.

Uklonite sve ne numeričke znakove

Sljedeća naredba uklanja sve ne numeričke znakove:

echo "my phone is 123-456-7890" | tr -cd

označava sve znakove s jednoznamenkastim brojem, a pomoću opcije -c naredba uklanja sve jednoznamenkaste znakove. Izlaz će izgledati ovako:

1234567890

Stavite svaku riječ u novi redak

Da bismo svaku riječ postavili u novi redak, moramo se uskladiti sa svim nefanumeričkim znakovima i zamijeniti ih s novim retkom:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

Uklonite prazne redove

Da biste izbrisali prazne retke, jednostavno stisnite ponavljajuće znakove novog retka:

tr -s '\n' < file.txt > new_file.txt

U gornjoj naredbi koristimo simbol preusmjeravanja < da bismo proslijedili sadržaj file.txt naredbi tr . Preusmjeravanje > piše izlaz naredbe na new_file.txt .

Ispišite $PATH direktorije u zasebnom retku

$PATH varijabla $PATH je popis direktorijuma koji je ograničen dvotočkom i govori o školjkama koje direktoriju pretražuju izvršne datoteke kada upišete naredbu.

Za ispis svakog direktorija u zasebnom retku treba se uskladiti s dvotočkom (:) i zamijeniti ga novim:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Zaključak

tr je naredba za prevođenje ili brisanje znakova.

Iako je vrlo koristan, tr može raditi samo s jednim znakom. Za složenije podudaranje uzoraka i manipulaciju nizom, trebali biste koristiti sed ili awk .

tr terminal