ฉันสามารถใช้คำสั่งใดในการตัดแถบลำดับรหัสสีออกจากไฟล์ข้อความ นึกคิดบางอย่างที่ฉันสามารถผ่านไปได้ หากฉันมีไฟล์ที่มี Rainbow.txt เป็นข้อความสีอะไรจะเกิดขึ้นในช่องว่าง:
cat rainbox.txt | *something* > plain.txt
ฉันกำลังทุบตีกับ CentOS 4.4
ฉันสามารถใช้คำสั่งใดในการตัดแถบลำดับรหัสสีออกจากไฟล์ข้อความ นึกคิดบางอย่างที่ฉันสามารถผ่านไปได้ หากฉันมีไฟล์ที่มี Rainbow.txt เป็นข้อความสีอะไรจะเกิดขึ้นในช่องว่าง:
cat rainbox.txt | *something* > plain.txt
ฉันกำลังทุบตีกับ CentOS 4.4
คำตอบ:
ลอง:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
คุณทำไม่ได้เพราะสิ่งที่เป็นลำดับหนีภัยไม่ได้กำหนดไว้อย่างดีโดยทั่วไปคุณต้องรู้ว่าเทอร์มินัลการหลบหนีของคุณออกแบบมาเพื่ออะไร หากคุณต้องการ จำกัด ปัญหาให้ "ตัดลำดับสี ANSI" (ข้อสันนิษฐานที่ค่อนข้างน่าจะเป็นไปได้) สิ่งที่ต้องการ:
sed 's/\o033\[[0-9]*;[0-9]*m//g'
ควรทำเคล็ดลับ
ต่อไปนี้จะจับ[Xm , [X; m , [X; Ymและ[X; Y; Zm] (บางส่วนอาจไม่ถูกต้องทางเทคนิค แต่พวกเขาทำงานและได้เห็นในป่า):
sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'