Android

Perintah Tr dalam linux dengan contoh

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Isi kandungan:

Anonim

tr adalah utiliti baris perintah dalam sistem Linux dan Unix yang menerjemahkan, memadam, dan memerah aksara dari input standard dan menulis hasil kepada output standard.

Perintah tr boleh melakukan operasi seperti mengeluarkan aksara yang berulang, menukar huruf besar ke huruf kecil, dan watak asas menggantikan dan membuang. Biasanya, ia digunakan dalam gabungan dengan perintah-perintah lain melalui paip.

Dalam tutorial ini, kami akan menunjukkan kepada anda cara menggunakan arahan tr melalui contoh praktikal dan penjelasan terperinci tentang pilihan yang paling umum.

Bagaimana Menggunakan Perintah tr

Sintaks untuk arahan tr adalah seperti berikut:

tr OPTION… SET1

tr menerima dua set aksara, biasanya dengan panjang yang sama, dan menggantikan aksara set pertama dengan aksara yang bersamaan dari set kedua.

SET adalah pada dasarnya rentetan watak, termasuk watak-watak istimewa yang melarikan diri.

Dalam contoh berikut, tr akan menggantikan semua aksara dari input standard (linuxize), dengan memetakan aksara dari set pertama dengan yang sepadan dari set kedua.

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

Setiap kejadian l digantikan dengan r , i dengan e , dan n dengan d :

reduxeze

Set aksara juga boleh ditakrifkan menggunakan julat watak. Contohnya, bukannya menulis:

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

anda boleh menggunakan:

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

Apabila -c ( --complement ) pilihan digunakan, tr menggantikan semua aksara yang tidak dalam SET1.

Dalam contoh di bawah semua aksara kecuali "li" akan digantikan dengan aksara terakhir dari set kedua:

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

liyyyiyyy

Seperti yang anda perhatikan, output di atas mempunyai satu ciri yang lebih jelas daripada input. Ini kerana arahan echo mencetak aksara baru yang tidak kelihatan yang juga digantikan dengan y . Untuk echo tali tanpa baris baru, gunakan pilihan -n .

Pilihan -d ( --delete ) memberitahu tr untuk memadam aksara yang dinyatakan dalam SET1. Apabila memotong aksara tanpa memerah, tentukan hanya satu set.

Perintah di bawah akan mengalih keluar aksara l , i dan z :

echo 'Linuxize' | tr -d 'liz'

L karakter tidak dipadam kerana input termasuk huruf besar L manakala watak l dalam SET adalah huruf kecil.

Lnuxe

Opsyen -s ( --squeeze-repeats ) menggantikan urutan kejadian yang berulang dengan aksara yang ditetapkan dalam SET terakhir.

Dalam contoh berikut, tr menghilangkan aksara ruang berulang:

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

GNU \ Linux

Apabila SET2 digunakan urutan aksara yang dinyatakan dalam SET1 digantikan dengan SET2.

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

GNU_\_Linux

--truncate-set1 -t ( --truncate-set1 ) memaksa tr untuk memangkas SET1 kepada panjang SET2 sebelum melakukan pemprosesan selanjutnya.

Secara lalai, jika SET1 lebih besar daripada SET2 tr akan menggunakan semula aksara terakhir SET2. Inilah contohnya:

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

Output menunjukkan bahawa aksara e dari SET1 dipadankan dengan aksara terbaru SET2, iaitu 2 :

Linux iz2

Sekarang, gunakan perintah yang sama dengan pilihan -t :

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

Linux ize

Anda dapat melihat bahawa tiga aksara terakhir SET1 dikeluarkan. SET1 menjadi 'ab', panjang sama dengan SET2, dan tiada penggantian dibuat.

Menggabungkan pilihan

Perintah tr juga membolehkan anda menggabungkan pilihannya. Sebagai contoh, arahan berikut mula-mula menggantikan semua aksara kecuali i dengan 0 dan kemudian memerah 0 huruf berulang:

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

0i0i0

Contoh Perintah Tr

Dalam bahagian ini, kami akan merangkumi beberapa contoh kegunaan umum arahan tr .

Tukar huruf kecil ke huruf besar

Menukar huruf kecil ke huruf besar atau sebaliknya adalah salah satu kes penggunaan khas perintah tr . sepadan dengan semua huruf kecil dan huruf kecil sepadan dengan semua huruf besar.

echo 'Linuxize' | tr '' ''

LINUXIZE

Daripada kelas karakter, anda juga boleh menggunakan julat:

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

Untuk menukarkan huruf besar kepada huruf kecil, cukup pasang tempat-tempat set.

Buang semua aksara bukan angka

Perintah berikut membuang semua aksara bukan angka:

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

bermaksud semua aksara digit, dan dengan menggunakan pilihan -c , perintah itu menghilangkan semua aksara bukan angka. Output akan kelihatan seperti ini:

1234567890

Letakkan setiap perkataan dalam barisan baru

Untuk meletakkan setiap kata dalam baris baru, kita perlu memadankan semua aksara bukan alfanumerik dan menggantikannya dengan barisan baru:

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

GNU is an operating system

Alih keluar baris kosong

Untuk memadamkan garisan kosong hanya memerah watak baru yang berulang:

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

Dalam arahan di atas kita menggunakan simbol redirection < untuk lulus kandungan file.txt ke arahan tr . new_file.txt > menulis output arahan ke new_file.txt .

Cetak direktori $PATH pada baris berasingan

Pembolehubah persekitaran $PATH adalah senarai direktori terkena usus besar yang menceritakan shell yang direktori untuk mencari file yang dapat dijalankan ketika Anda mengetikkan perintah.

Untuk mencetak setiap direktori pada baris berasingan kita perlu memadankan usus besar (:) dan menggantinya dengan barisan baru:

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

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

Kesimpulannya

tr adalah arahan untuk menterjemah atau memadam aksara.

Walaupun sangat berguna, tr boleh berfungsi hanya dengan aksara tunggal. Untuk pemadanan corak yang lebih kompleks dan manipulasi rentetan, anda harus menggunakan sed atau awk .

tr terminal