Loại bỏ các ký tự không in được từ các bản ghi mong đợi?


8

Làm cách nào tôi có thể loại bỏ các chuỗi ký tự sau khỏi tệp của mình? ^[[64;8H, ^[[?25h, ^[[1;64rVv hoặc tránh có mong đợi thêm chúng ở nơi đầu tiên?

Lý lịch:

Tôi đang sử dụng một tập hợp các tập lệnh mong đợi cho các tác vụ nhất định.

Các tệp đầu ra tôi đang thu thập thường chứa loại ký tự ở trên (như được hiển thị trong emacs / vi / cat -v). Tôi đã thử một số lệnh tr như sau nhưng nó chỉ hiển thị [64; 8H, v.v.

tr -dc '[:print:]\n' < input

BIÊN TẬP:

Các kết quả từ trên trên một dòng có vấn đề

[1;64r[64;1H[64;1H[2K[64;1H[?25h[64;1H[64;.....

Câu trả lời:


6

Bạn đã gần. Bạn muốn

tr -dc '[:print:]\n' <input

Từ tr(1)trang người đàn ông:

-c, -C, -
bổ sung sử dụng phần bù của SET1

Cập nhật

Nếu bạn cũng muốn xóa các chuỗi thoát, bạn có thể sử dụng sedđoạn mã sau :

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

Nó được lấy từ một câu hỏi về lỗi máy chủ có tên 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?


Cảm ơn Joseph. Điều đó làm cho các nhân vật có thể nhìn thấy nhưng không tước bỏ chúng. Tôi sẽ hiển thị kết quả trong phần thân câu hỏi.
Tim Brigham

@TimBrigham Bản cập nhật có giúp được không?
Joseph R.

1

Sau một vài thử nghiệm (tôi sử dụng vỏ cá, làm nổi bật mọi thứ):

perl -pe '
    s/\033\\\\\[(\d+;)*\d*[[:alpha:]]//g;
    s/\033\\\\\]0;//g;
    s/\x7//g;
    s/\033\(B//g;
' expect.log
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.