Di CentOS 4.4, bagaimana saya bisa menghapus urutan melarikan diri dari file teks?


17

Perintah apa yang dapat saya gunakan untuk menghapus urutan kode warna dari file teks? Idealnya, sesuatu yang bisa saya lakukan melalui pipa. Jika saya memiliki file dengan sekelompok rainbow.txt teks berwarna, apa yang ada di celah:

cat rainbox.txt | *something* > plain.txt

Saya bekerja di bash pada CentOS 4.4.

Jawaban:


30

Mencoba:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

Dari 3 jawaban ini hanya satu-satunya yang berhasil.
slm

4

cat rainbox.txt | col -b > plain.txt


Mengapa tidak ada upvote dalam hal ini? Satu-satunya solusi yang bekerja untuk saya! Dan itu sangat sederhana juga!
phunehehe

3
Karena itu tidak berhasil untuk saya.
lzap

6
Ini hanya menghilangkan karakter pelarian, bukan argumen mereka.
Aaron

1

Anda tidak bisa, karena apa itu urutan pelarian tidak didefinisikan dengan baik secara umum - Anda perlu tahu seperti apa terminal urutan pelarian Anda dirancang. Jika Anda ingin membatasi masalah untuk "menghapus urutan warna ANSI" (asumsi yang cukup mungkin), sesuatu seperti:

sed 's/\o033\[[0-9]*;[0-9]*m//g'

Sebaiknya lakukan triknya.


1

Berikut ini akan menangkap kemungkinan [Xm , [X; m , [X; Ym , dan [X; Y; Zm (beberapa di antaranya mungkin secara teknis salah, tetapi mereka bekerja dan terlihat di alam liar):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.