ไม่มีใครรู้วิธีใช้ Sed เพื่อลบช่องว่างทั้งหมดในไฟล์ข้อความหรือไม่? ฉันยังพยายามใช้คำสั่ง "d" ลบเพื่อทำเช่นนั้น แต่ดูเหมือนจะไม่สามารถเข้าใจได้
ไม่มีใครรู้วิธีใช้ Sed เพื่อลบช่องว่างทั้งหมดในไฟล์ข้อความหรือไม่? ฉันยังพยายามใช้คำสั่ง "d" ลบเพื่อทำเช่นนั้น แต่ดูเหมือนจะไม่สามารถเข้าใจได้
คำตอบ:
หากต้องการ "ลบช่องว่างทั้งหมด" อาจหมายถึงหนึ่งในสิ่งต่าง ๆ :
0x20
ลบเกิดขึ้นทั้งหมดของตัวละครของพื้นที่รหัส\t
"\n
" และอื่น ๆหากsed
ไม่ใช่ความต้องการด้วยเหตุผลที่ซ่อนอยู่ให้ใช้เครื่องมือที่เหมาะสมสำหรับงาน
คำสั่งtr
มีการใช้งานหลักในการแปล (ดังนั้นชื่อ "tr") รายการของตัวละครไปยังรายการของตัวละครอื่น ๆ ในมุมกรณีมันสามารถแปลเป็นรายการของตัวละครที่ว่างเปล่า; ตัวเลือก-d
( --delete
) จะลบตัวอักษรที่ปรากฏในรายการ
รายการอักขระสามารถใช้ประโยชน์จากคลาสอักขระใน[:...:]
ไวยากรณ์
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
sed
ด้วย sed, [:...:]
ไวยากรณ์สำหรับคลาสอักขระต้องรวมกับไวยากรณ์สำหรับชุดอักขระใน regexps [...]
ทำให้เกิดความสับสนบ้าง[[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt
tr -d ' ' < input.txt > no-spaces.txt
ดังนั้นสิ่งที่ทำงานสำหรับฉันคือ
tr
ตอนนี้ (คุณเห็นมันจากที่อื่นไหม)
คุณสามารถใช้สิ่งนี้เพื่อลบช่องว่างทั้งหมดในfile
:
sed -i "s/ //g" file
man sed | sed "s/ //g"
/
ด้วยอักขระอื่นเช่น:sed "ss ssg"