ฉันกำลังสับสนเกี่ยวกับวิธีการ-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(ไม่ใช่ตัวแรกตามที่คุณพูด) ที่ทำซ้ำในอินพุต นี้ถูกบันทึกไว้ในบทความที่คุณเชื่อมโยงและมีการอธิบายในย่อหน้าสุดท้ายในส่วน "คำอธิบาย" ของหน้าคน