Android

Tr utos sa linux na may mga halimbawa

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Talaan ng mga Nilalaman:

Anonim

tr ay isang utos na linya ng utos sa mga sistema ng Linux at Unix na isinasalin, natatanggal, at pinipisil ang mga character mula sa karaniwang pag-input at isinusulat ang resulta sa karaniwang output.

Ang tr utos ay maaaring magsagawa ng mga operasyon tulad ng pag-alis ng paulit-ulit na mga character, pag-convert ng malalaking titik sa maliit na titik, at pangunahing karakter na papalit at alisin. Karaniwan, ginagamit ito kasama ang iba pang mga utos sa pamamagitan ng piping.

Sa tutorial na ito, ipapakita namin sa iyo kung paano gamitin ang tr utos sa pamamagitan ng mga praktikal na halimbawa at detalyadong paliwanag ng mga pinaka-karaniwang pagpipilian.

Paano Gamitin ang tr Command

Ang syntax para sa utos ng tr ay ang mga sumusunod:

tr OPTION… SET1

Tumatanggap ang tr dalawang hanay ng mga character, karaniwang may parehong haba, at pinapalitan ang mga character ng mga unang set kasama ang kaukulang mga character mula sa ikalawang hanay.

Ang isang SET ay talaga ng isang string ng mga character, kabilang ang mga espesyal na mga character na nakatalikod sa likod.

Sa sumusunod na halimbawa, papalitan ng tr lahat ng mga character mula sa karaniwang pag-input (linuxize), sa pamamagitan ng pagma-map sa mga character mula sa unang hanay kasama ang mga pagtutugma mula sa ikalawang hanay.

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

Ang bawat paglitaw ng l ay pinalitan ng r , i with e , at n sa d :

reduxeze

Ang mga set ng character ay maaari ring tukuyin gamit ang mga saklaw ng karakter. Halimbawa, sa halip na magsulat:

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

pwede mong gamitin:

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

Kapag ginamit ang pagpipilian na -c ( --complement ), pinapalitan ang lahat ng mga character na wala sa SET1.

Sa halimbawa sa ibaba ng lahat ng mga character maliban sa "li" ay papalitan ng huling character mula sa ikalawang hanay:

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

liyyyiyyy

Tulad ng napansin mo, ang output sa itaas ay may isang mas nakikitang character kaysa sa pag-input. Ito ay dahil ang echo utos ay naglimbag ng isang hindi nakikitang character na bagong linya na pinalitan din ng y . Upang tumunog ang isang string na walang bagong linya, gamitin ang -n opsyon.

Ang pagpipilian na -d ( --delete ) ay nagsasabi sa tr upang tanggalin ang mga character na tinukoy sa SET1. Kapag tinatanggal ang mga character nang hindi pinipiga, tukuyin lamang ang isang set.

Ang utos sa ibaba ay aalisin ang mga l , i at z character:

echo 'Linuxize' | tr -d 'liz'

Ang character na L ay hindi tinanggal dahil ang input ay may kasamang isang uppercase L habang ang l character sa SET ay maliit na titik.

Lnuxe

Ang pagpipilian ( --squeeze-repeats ) ay pumapalit ng isang pagkakasunud-sunod ng paulit-ulit na mga pangyayari sa character na itinakda sa huling SET.

Sa sumusunod na halimbawa, tinanggal ng tr ang paulit-ulit na mga character sa puwang:

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

GNU \ Linux

Kapag ginagamit ang SET2 sa pagkakasunud-sunod ng character na tinukoy sa SET1 ay pinalitan ng SET2.

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

GNU_\_Linux

Ang opsyon na -t ( --truncate-set1 ) ay pinipilit ang truncate ng SET1 sa haba ng SET2 bago gawin ang karagdagang pagproseso.

Bilang default, kung ang SET1 ay mas malaki kaysa sa SET2 tr ay muling magagamit ang huling character ng SET2. Narito ang isang halimbawa:

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

Ang output ay nagpapakita na ang character e mula sa SET1 ay itinugma sa pinakabagong character ng SET2, na kung saan ay 2 :

Linux iz2

Ngayon, gumamit ng parehong utos na may pagpipilian na -t :

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

Linux ize

Maaari mong makita na ang huling tatlong mga character ng SET1 ay tinanggal. Ang SET1 ay nagiging 'ab', ang parehong haba ng SET2, at walang kapalit na ginawa.

Pinagsasama ang mga pagpipilian

Pinapayagan ka ng tr command na mapagsama ang mga pagpipilian nito. Halimbawa, ang sumusunod na utos ay unang pinapalitan ang lahat ng mga character maliban i sa 0 at pagkatapos ay pinipiga ang paulit-ulit na 0 character:

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

0i0i0

Mga Halimbawa ng Tr Command

Sa seksyong ito, sasakupin namin ang ilang mga halimbawa ng mga karaniwang paggamit ng utos ng tr .

I-convert ang mas mababang kaso sa itaas na kaso

Ang pag-convert ng mas mababang kaso sa itaas na kaso o baligtad ay isa sa mga tipikal na kaso ng paggamit ng utos ng tr . tumutugma sa lahat ng mga mas mababang mga character na kaso at tumutugma sa lahat ng mga character sa malalaking titik.

echo 'Linuxize' | tr '' ''

LINUXIZE

Sa halip na mga klase ng character, maaari mo ring gamitin ang mga saklaw:

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

Upang ma-convert ang itaas na kaso sa mas mababang kaso, lumipat lamang sa mga lugar ng mga set.

Alisin ang lahat ng mga hindi character na numero

Ang sumusunod na utos ay nag-aalis ng lahat ng mga hindi character na numero:

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

naninindigan para sa lahat ng mga digit na character, at sa pamamagitan ng paggamit ng pagpipilian na -c , tinanggal ng utos ang lahat ng mga di-digit na character. Ang output ay magiging ganito:

1234567890

Ilagay ang bawat salita sa isang bagong linya

Upang mailagay ang bawat salita sa isang bagong linya, kailangan nating tumugma sa lahat ng mga di-alphanumerical character at palitan ang mga ito ng isang bagong linya:

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

GNU is an operating system

Alisin ang mga blangkong linya

Upang tanggalin ang mga blangko na linya simpleng pisilin ang paulit-ulit na mga character na bagong linya:

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

Sa utos sa itaas ginagamit namin ang simbolo ng redirection < upang maipasa ang nilalaman ng file.txt sa utos ng tr . Ang pag-redirect > nagsusulat ng output ng utos sa new_file.txt .

I-print ang mga direktoryo ng $PATH sa isang hiwalay na linya

Ang $PATH variable ng kapaligiran ay isang listahan ng mga direktoryo na pinapayuhan ng colon na nagsasabi sa shell na mga direktoryo na maghanap para sa mga maipapatupad na mga file kapag nag-type ka ng isang utos.

Upang i-print ang bawat direktoryo sa isang hiwalay na linya kailangan naming tumugma sa colon (:) at palitan ito ng bagong linya:

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

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

Konklusyon

tr ay isang utos para sa pagsasalin o pagtanggal ng mga character.

Bagaman kapaki-pakinabang, ang tr maaaring gumana lamang sa mga solong character. Para sa mas kumplikadong pagtutugma ng pattern at pagmamanipula ng string, dapat mong gamitin ang sed o awk .

tr terminal