Menghapus karakter yang tidak dapat dicetak dari log harapan?


8

Bagaimana saya bisa menghapus urutan karakter berikut dari file saya? ^[[64;8H, ^[[?25h, ^[[1;64rDll atau menghindari memiliki mengharapkan menambahkannya di tempat pertama?

Latar Belakang:

Saya menggunakan kumpulan skrip harapan untuk tugas-tugas tertentu.

File keluaran yang saya kumpulkan sering berisi tipe karakter di atas (seperti yang ditampilkan dalam emacs / vi / cat -v). Saya sudah mencoba sejumlah perintah tr seperti berikut ini tetapi hanya membuat [64; 8H dll terlihat.

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

EDIT:

Hasil dari atas pada jalur yang bermasalah

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

Jawaban:


6

Anda sudah dekat. Kamu ingin

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

Dari tr(1)halaman manual:

-c, -C, --complement
menggunakan komplemen dari SET1

Memperbarui

Jika Anda ingin menghapus urutan melarikan diri juga, Anda dapat menggunakan yang berikut ini sed potongan :

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

Itu diambil dari pertanyaan serverfault yang disebut Dalam CentOS 4.4, bagaimana saya bisa menghapus urutan melarikan diri dari file teks?


Terima kasih Joseph. Itu membuat karakter terlihat tetapi tidak menghapusnya. Saya akan menunjukkan hasilnya di badan pertanyaan.
Tim Brigham

@TimBrigham Apakah pembaruan membantu?
Joseph R.

1

Setelah beberapa percobaan (saya menggunakan kerang ikan, yang mewarnai semua):

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