Saya bingung mengenai jalan -s
, -t
dan -c
pilihan bekerja di tr perintah. Kapan saya melakukannya
echo I am a good boy | tr good bad
Saya mendapatkan output:
I am a bddd bdy
Ini cukup dimengerti, karena o
diulangi dalam good
. Perubahan terakhir yang mungkin terjadi o
adalah d
, dan karenanya output.
Sekarang ketika saya melakukannya
echo I am a good boy | tr -s good bad
outputnya adalah
I am a bd bdy
The -s
opsi seharusnya memeras setiap kejadian berulang setiap karakter dalam set 1 ke dalam kejadian tunggal dan kemudian mengubah masing-masing karakter di set 1 ke dalam sesuai karakter di set 2 yang di posisi yang sama.
Jadi seharusnya begitu
I am a bad bay.
Kenapa harus berubah?
Apalagi ketika saya melakukannya
echo I am a good boy | tr -c good bad
saya mendapat dddddddgoodddodd
Bagaimana cara -c
kerja opsi tr
, merujuk pada contoh ini?
Dan akhirnya: bagaimana mengubah diri saya dari anak baik ke anak jahat .... :): P Yaitu,
echo I am a good boy | tr <something>
memberi saya output sebagai: I am a bad boy
.
-s
saklar menyebabkantr
memeras karakter dari argumen terakhir ketr
(bukan yang pertama, seperti yang Anda katakan) yang diulang dalam input. Ini dicatat dalam artikel yang Anda tautkan, dan dijelaskan di paragraf terakhir di bagian "Deskripsi" halaman manual .Pemahaman Anda tentang
-s
itu tidak benar, itu menggantikan kemunculan berulang karakter di set 1 di input dengan satu karakter. itu tidak mengubah set, misalnya.memberi
The
-c
Menggantikan pilihan set 1 dengan pelengkap (yaitu. Himpunan semua karakter yang tidak terdapat dalam set 1). Anda dapat menggunakan ini untuk menghapus semua kecuali karakter yang ditentukan misalnya.output
sumber
Jawaban yang lain tertutup
tr
's-s
,-t
dan-c
pilihan tetapi untuk kelengkapan:Anda mengalami masalah karena Anda mengambil alat yang salah.
tr
adalah untuk transformasi karaktersed
untuk mengedit aliran.Karena keduanya
good
danbad
urutan karakter dalam aliransed
lebih cocok.echo I am a good boy | <something>
memberi saya output sebagai:I am a bad boy
The
s/..../..../
adalah Pengganti. Apa pun yang cocok dengan persamaan reguler pertama akan diganti dengan yang kedua. The/g
bendera di akhir adalah untuk penggantian global dengan cara ini semua kejadian akan diganti tidak hanya yang pertama.sumber
Iya. persis!
tr -s
menggantikan contoh karakter yang diulang dengan satu karakter.(melalui halaman manual.)
jadi begini:
dikonversi
good
menjadibddd
. contoh berulang adalah 3 'd's.jadi itu menggantikan tiga contoh ini dengan satu contoh.
itu membuatnya bd. :)
sumber