tr (tr anslate) คำสั่งใน Linux อ่านข้อความจาก อินพุตมาตรฐาน ทำการแก้ไขข้อความแล้วส่งไปที่ เอาต์พุตมาตรฐาน . บทความนี้จะอธิบายและแสดงสาเหตุและวิธีที่คุณอาจใช้
tr ไวยากรณ์คำสั่ง
นี่คือไวยากรณ์ที่คุณต้องใช้คำสั่ง:
tr OPTIONS SET1 [SET2]
โปรดทราบว่า:
- ตัวเลือก ควรเป็นรายการตัวเลือกจากตารางด้านล่าง
- ตัวละครใน SET1 จะถูกแทนที่ด้วยอักขระในตำแหน่งที่เกี่ยวข้องใน SET2
- ตัวเลือกเหล่านี้เป็นทางเลือก – ตัวเลือก . บางส่วน มีความสามารถในการแปล ดังนั้นทั้ง SET ไม่จำเป็นเสมอไป
- คุณจะสังเกตเห็นว่าไม่มีการประมวลผลข้อความ ซึ่งให้มาโดยใช้การเปลี่ยนเส้นทางแบบมาตรฐาน ดูข้อมูลเพิ่มเติมได้ในตัวอย่างด้านล่าง
ต่อไปนี้คือ ตัวเลือก – ส่งตรงจากคู่มือผู้ใช้:
ตัวเลือก | |
---|---|
-c | ใช้ส่วนเติมเต็มของ SET1 |
-d | ลบอักขระใน SET1 ห้ามแปล |
-s | แทนที่แต่ละลำดับของอักขระที่ซ้ำกันซึ่งระบุไว้ใน SET ที่ระบุล่าสุดด้วยอักขระตัวเดียวที่เกิดขึ้น |
-t | ขั้นแรก ตัด SET1 เป็นความยาวของ SET2 |
หากคุณต้องการแทนที่หรือลบอักขระพิเศษ เช่น การขึ้นบรรทัดใหม่และแท็บใน SET คุณสามารถใช้ลำดับต่อไปนี้:
ลำดับการตีความ | อักขระพิเศษ |
---|---|
\NNN | อักขระที่มีค่าฐานแปด NNN (1 ถึง 3 หลักฐานแปด) |
\\ | แบ็กสแลช |
\b | Backspace |
\n | ขึ้นบรรทัดใหม่ |
\r | คืนสินค้า |
\t | แท็บแนวนอน |
[:alnum:] | ตัวอักษรและตัวเลขทั้งหมด |
[:alpha:] | ตัวอักษรทั้งหมด |
[:blank:] | ช่องว่างแนวนอนทั้งหมด |
[:digit:] | ตัวเลขทั้งหมด |
[:lower:] | ตัวพิมพ์เล็กทั้งหมด |
[:space:] | ช่องว่างแนวนอนหรือแนวตั้งทั้งหมด |
[:upper:] | ตัวพิมพ์ใหญ่ทั้งหมด |
ฉันได้รวมเฉพาะตัวเลือก/ลำดับที่ใช้กันทั่วไปด้านบน (เนื่องจากมีเพียงไม่กี่รายการ) . คุณดูรายการตัวเลือกคำสั่งทั้งหมดได้ในคู่มือผู้ใช้ ซึ่งหาได้จากการเรียกใช้:
man tr
tr ตัวอย่างคำสั่ง
ต่อไปนี้คือตัวอย่างวิธีใช้ tr คำสั่ง
นี่เป็นเพียงตัวอย่างเท่านั้น คุณสามารถผสมและจับคู่ตัวเลือกและลำดับเพื่อให้ได้ผลลัพธ์ที่คุณต้องการ
การลบตัวละคร
ตัวอย่างด้านล่างจะลบอักขระที่ระบุออกจากสตริง ผลลัพธ์ของ echo คำสั่งคือ ไปป์ ไปที่ tr คำสั่ง
นี่คือวิธีที่คำสั่ง tr รับข้อความที่คุณต้องการแปล – ต้องระบุเป็นอินพุตมาตรฐานผ่านการไพพ์หรือการเปลี่ยนเส้นทาง .
echo "axbxcxdx" | tr -d 'x'
ด้านบน -d ตัวเลือกสั่ง tr เพื่อลบอักขระ x จากเอาต์พุตของ echo คำสั่ง
สิ่งนี้จะกลับมา:
abcd
ตัวพิมพ์เล็กถึงตัวพิมพ์ใหญ่
ตัวอย่างด้านล่างใช้ลำดับการตีความบน/ล่างเพื่อแทนที่อักขระตัวพิมพ์เล็กทั้งหมดด้วยอักขระตัวพิมพ์ใหญ่:
echo "aBcDeFg" | tr '[:lower:]' '[:upper:]'
สิ่งนี้จะส่งออก:
ABCDEFG
เปลี่ยนตัวละคร
tr มักใช้เพื่อแทนที่อักขระในสตริง ตัวอย่างเช่น การแทนที่ช่องว่างด้วยขีดกลาง:
echo "frogs and fish" | tr '[:blank:]' '-'
ซึ่งจะส่งออก:
frogs-and-fish
ตัวอย่างนี้ใช้ SET สองชุด – ชุดแรกประกอบด้วยตัวระบุสำหรับพื้นที่สีขาว/ว่างเปล่า (เช่น แท็บช่องว่าง) ชุดที่สองมีเส้นประ – ดังนั้นช่องว่างจะถูกแทนที่ด้วยขีดกลาง (SET2 แทนที่ SET1)
สิ่งนี้มีประโยชน์เมื่อสร้างชื่อไฟล์สำหรับการอัปโหลดไปยังเว็บไซต์ และทำให้แน่ใจว่าไม่มีช่องว่างในชื่อไฟล์เหล่านั้น
การแทนที่อักขระหลายตัว
ในตัวอย่างที่แล้ว แต่ละชุดมีอักขระเพียงตัวเดียว สามารถใส่อักขระได้หลายตัวเพื่อทำการแทนที่หลายรายการพร้อมกัน:
echo "frogs and fish" | tr 'sf' 'SF'
ซึ่งจะส่งออก:
frogs-and-fish
อย่างที่คุณเห็น ตัวอักษรที่ตรงกันในตัวแรกถูกแทนที่ด้วยตัวอักษรที่สอง
การลบอักขระซ้ำ
ด้านล่าง ช่องว่างซ้ำที่ไม่จำเป็นจะถูกลบออกจากข้อความบางส่วน:
echo 'Absolutely spaced out' | tr -s '[:space:]'
ซึ่งจะส่งออก:
Absolutely spaced out
[:blank:] ตัวระบุถูกใช้กับ -s ตัวเลือกในการระบุและลบช่องว่างที่เกิดซ้ำ