GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana opsi '-s', '-t', dan '-c' dari perintah tr bekerja di Unix?

-s Beralih:Pencet (hapus karakter berulang)

echo i am a good boy | tr -s good bad

keluaran:i am a bd bdy

Ada dua hal yang terjadi di balik layar yang membuat hal ini terjadi. Pertama, jika argumen kedua adalah tr lebih pendek dari yang pertama daripada karakter terakhir di arg ke-2 diulang untuk membuatnya sama panjang dengan yang pertama. Jadi perintah yang setara adalah:

echo i am a good boy | tr -s good badd

Hal lain yang terjadi adalah ketika karakter dalam argumen pertama diulang, mereka menimpa kejadian sebelumnya (saya mengacu pada dua oo ada di good ). Ini membuat perintah sekarang setara dengan:

echo i am a good boy | tr -s god bdd

(o kedua ke d penggantian menimpa o sebelumnya ke a penggantian, membuatnya berlebihan)

Tanpa -s alihkan outputnya menjadi

i am a bddd bdy

Dengan -s alihkan tr 'memeras' setiap karakter berulang yang tercantum di terakhir argumen meninggalkan hasil akhir:

i am a bd bdy

-c Ganti:Pelengkap

-c switch digunakan untuk mencocokkan komplemen dari argumen pertama (yaitu semua karakter yang tidak tercantum dalam arg 1). Akibatnya, arg 1 akan berisi banyak huruf (256-3). Sekarang, hal yang sama terjadi pada arg 2 seperti pada kasus sebelumnya:karakter terakhir Arg 2 diulangi agar sesuai dengan panjang atau Arg 1. Jadi pernyataan aslinya:

echo i am a good boy | tr -c good bad

setara dengan:

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(perhatikan g yang hilang , o dan d di set pertama, perhatikan juga bahwa d akan mengganti setiap karakter lain di set kedua -- termasuk karakter spasi)

Inilah mengapa i am a good boy berubah menjadi dddddddgoodddodd

Info lebih lanjut di sini:http://www.linuxjournal.com/article/2563


Pemahaman Anda tentang -s salah, itu menggantikan kemunculan berulang karakter di set 1 di input dengan satu karakter. itu tidak mengubah set, misalnya.

echo i am a good boy | tr -s god bad

memberi

i am a bad bay

-c opsi menggantikan set 1 dengan komplemennya (mis. set semua karakter yang tidak terdapat dalam set 1). Anda dapat menggunakan ini untuk menghapus semua kecuali karakter yang ditentukan misalnya.

echo i am a good boy | tr -cd gobdy

output

goodboy

Linux
  1. Bagaimana cara menggunakan perintah nama dasar?

  2. Tujuan .bashrc Dan Bagaimana Cara Kerjanya?

  3. Cara Menginstal dan Menggunakan Perintah Ping di Linux

  1. Bagaimana Cara Menyalin File di Linux dan Unix? Contoh Perintah 10 cp

  2. Bagaimana cara kerja perintah 'ls' di Linux/Unix?

  3. Bagaimana cara kerja perintah ps?

  1. Jelaskan Pilihan Perintah Readlink?

  2. Bagaimana Cara Mengingat Opsi Perintah??

  3. Bagaimana Perintah Keluar Bekerja Pada Terminal Unix?