นี่ควรจะง่ายจริงๆ แต่ด้วยเหตุผลบางอย่างมันไม่ทำงาน:
sed -i.bak -E 's/\t/ /' file.txt
แทนที่จะเป็นการแทนที่อักขระแท็บมันเป็นการแทนที่t
อักขระ ฉันลองทุกรูปแบบเกี่ยวกับเรื่องนี้ฉันสามารถคิดถึงเล่นกับข้อความ ฯลฯ ฉัน Googled และพบคนอื่น ๆ ที่ใช้คำพูดที่คล้ายกันและดูเหมือนว่าพวกเขาจะได้ผลสำหรับพวกเขา
สิ่ง-E
นี้เป็น OS X ฉันคิดว่าความล้มเหลวอาจเป็นผลมาจากการเล่นโวหารแปลก ๆ ของ OS X sed
ดังนั้นฉันจึงลองใช้กับ Ruby เช่นกัน (ไม่ใส่-i
) และได้รับผลลัพธ์เดียวกัน:
ruby -pe '$_.gsub!(/\t/," ")' < file.txt > file.new
ฉันใช้ Bash 3.2.51 บน OS X และ iTerm ถึงแม้ว่าฉันจะไม่เห็นว่าสิ่งเหล่านี้จะเกี่ยวข้องกันมากเพียงใด ฉันไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อมแปลก ๆ แต่ฉันสามารถโพสต์สิ่งที่คุณคิดว่าอาจเกี่ยวข้อง
มีอะไรผิดปกติ?
UPDATE : ฉันต้องทำผิดพลาดหรือพิมพ์ผิดเมื่อฉันลองรุ่น Ruby เนื่องจาก Gilles ชี้ให้เห็นว่ามันใช้งานได้ (และฉันไม่เคยทำให้เขาผิดเลย!) ฉันไม่แน่ใจว่าเกิดอะไรขึ้น แต่ฉันค่อนข้างมั่นใจว่าต้องเป็นความผิดพลาดของฉัน
\t
ในsed
คำสั่งด้วยCTRL-V<TAB>
ตำแหน่งที่<TAB>
เป็นคีย์แท็บและCTRL-V
เป็นคีย์ควบคุมและv
กดด้วยกัน