ในระบบ GNU คุณจะต้องใช้sed
หรือคล้ายกันหากโลแคลของคุณใช้อักขระหลายไบต์( ตาม jimmij แนะนำ )เนื่องจาก GNU tr
สามารถอ้างอิงอักขระได้ต่อไบต์เท่านั้น ในโลแคล ASCII คุณสามารถลบรายการซ้ำทั้งหมดที่มีtr
:
LC_ALL=C tr -s '\0-\255' <input
ดังนั้น...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
... พิมพ์ ...
This is my name
คุณสามารถเลือกโดยการอ้างอิงเป้าหมายของคุณตามช่วง:
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
...หรือ...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
... ที่ทำงานออกมาเป็นสิ่งเดียวกันและที่ทั้งสองพิมพ์:
Thhiisss iisss mmyyy nameeee
... หรือการใช้งาน[:punct:]
, [:digit:]
, [:lower:]
, [:alpha:]
หรือสิ่งที่คุณต้องการ คุณสามารถคัดค้านการเลือกด้วย / -c
...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
... พิมพ์ ...
TTTThis is my name