Trong CentOS 4.4, làm cách nào tôi có thể loại bỏ các chuỗi thoát khỏi tệp văn bản?


17

Tôi có thể sử dụng lệnh nào để loại bỏ các chuỗi thoát mã màu khỏi tệp văn bản? Lý tưởng nhất là một cái gì đó tôi có thể thông qua. Nếu tôi có một tệp có một loạt các văn bản màu cầu vồng, thì điều gì sẽ xảy ra trong khoảng trống:

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

Tôi đang làm việc trong bash trên CentOS 4.4.

Câu trả lời:


30

Thử:

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

Trong số 3 câu trả lời, đây là câu trả lời duy nhất có hiệu quả.
slm

4

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


Tại sao không có upvote về điều này? Giải pháp duy nhất hiệu quả với tôi! Và nó cũng thật đơn giản!
phunehehe

3
Bởi vì nó không làm việc cho tôi.
lzap

6
Điều này chỉ được loại bỏ các nhân vật thoát, không tranh luận của họ.
Aaron

1

Bạn không thể, bởi vì trình tự thoát là gì không được xác định rõ ràng nói chung - bạn cần biết loại trình tự thoát của bạn được thiết kế cho loại thiết bị đầu cuối nào. Nếu bạn muốn hạn chế sự cố để "tách chuỗi màu ANSI" (một giả định khá có khả năng), đại loại như:

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

Nên làm thủ thuật.


1

Sau đây sẽ nắm bắt các khả năng [Xm , [X; m , [X; Ym[X; Y; Zm (một số trong số đó có thể không chính xác về mặt kỹ thuật, nhưng chúng hoạt động và đã được nhìn thấy trong tự nhiên):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.