ฉันกำลังสับสนเกี่ยวกับวิธีการ-s
, -t
และ-c
ตัวเลือกการทำงานในTRคำสั่ง เมื่อฉันทำ
echo I am a good boy | tr good bad
ฉันได้รับผลลัพธ์:
I am a bddd bdy
นี้เป็นที่เข้าใจมากเนื่องจากซ้ำแล้วซ้ำอีกในo
good
การเปลี่ยนแปลงครั้งสุดท้ายที่เป็นไปได้แทนo
คือd
และด้วยเหตุนี้ผลลัพธ์
ตอนนี้เมื่อฉันทำ
echo I am a good boy | tr -s good bad
ผลลัพธ์คือ
I am a bd bdy
-s
ตัวเลือกควรจะบีบทุกเกิดขึ้นซ้ำแล้วซ้ำอีกของตัวละครที่อยู่ในชุดละ 1 เป็นเกิดขึ้นเพียงครั้งเดียวแล้วเปลี่ยนตัวละครแต่ละตัวใน 1 ชุดลงไปในตัวละครที่สอดคล้องกันในชุดที่ 2 ซึ่งอยู่ในตำแหน่งเดียวกัน
ดังนั้นมันควรจะเป็น
I am a bad bay.
ทำไมการเปลี่ยนแปลง
ยิ่งกว่านั้นเมื่อฉันทำ
echo I am a good boy | tr -c good bad
ฉันเข้าใจ dddddddgoodddodd
อย่างไร-c
การทำงานของตัวเลือกสำหรับการtr
หมายถึงเช่นนี้หรือไม่?
และในที่สุด: วิธีการเปลี่ยนตัวเองจากเด็กดีไปเป็นเด็กเลว .... :): P นั่นคือ
echo I am a good boy | tr <something>
ให้ผลลัพธ์เป็น: I am a bad boy
.
-s
สวิตช์ทำให้tr
บีบอักขระใด ๆ จากอาร์กิวเมนต์สุดท้ายเป็นtr
(ไม่ใช่ตัวแรกตามที่คุณพูด) ที่ทำซ้ำในอินพุต นี้ถูกบันทึกไว้ในบทความที่คุณเชื่อมโยงและมีการอธิบายในย่อหน้าสุดท้ายในส่วน "คำอธิบาย" ของหน้าคน