Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

คำสั่ง tr ใน Linux – คืออะไรและใช้งานอย่างไร

 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 ตัวเลือกในการระบุและลบช่องว่างที่เกิดซ้ำ