GNU/Linux >> Belajar Linux >  >> Linux

Cara menghapus karakter non-ascii menggunakan sed

Solusi yang ditawarkan di sini tidak berhasil untuk saya. Mungkin masalah saya berbeda, tetapi saya perlu menghapus warna ASCII dan karakter lain dari teks ASCII murni.

Namun, yang berikut ini berhasil untuk saya:

Mengupas Kode Pelarian dari Teks ASCII

sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g'

Dalam konteks (BASH):

$ printf "\e[32;1mhello\e[0m\n"
hello

$ printf "\e[32;1mhello\e[0m\n" | cat -vet
^[[32;1mhello^[[0m$

$ printf "\e[32;1mhello\e[0m\n" | sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g' | cat -vet
hello$

Apakah Anda mencoba

cat /bin/mkdir | tr -cd "[:print:]"

Saya pikir itu menyelesaikan masalah ?

Jika hanya konten teks yang menarik bagi Anda, Anda juga dapat menggunakan

cat /bin/mkdir | strings

Apakah Anda tahu penyandian file apa yang saat ini digunakan? Jika demikian, Anda dapat menggunakan iconv untuk mengonversinya. Ini adalah utilitas untuk mengonversi dari satu pengkodean karakter ke yang lain. Jadi, jika file aslinya dalam UTF-8 dan Anda ingin mengonversi ke ASCII, Anda dapat menggunakan yang berikut ini:

iconv -f utf8 -t ascii <inputfile>

Perintah file pada file masukan mungkin memberi tahu Anda penyandian saat ini.

Menariknya, ada perintah bernama enca yang akan melakukan yang terbaik untuk menentukan penyandian karakter yang digunakan jika Anda mengetahui bahasa konten file.

Pertanyaan lain ini mungkin jawabannya.


Ini sepertinya tidak bekerja dengan sed . Mungkin tr akan dilakukan?

tr -d '\200-\377'

Atau dengan pelengkap:

tr -cd '\000-\177'

Linux
  1. Cara Menghapus Pengguna di Linux Menggunakan Command Line

  2. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?

  3. Cara Menghapus File Lebih Lama dari N hari menggunakan tmreaper di Linux

  1. Bagaimana cara menulis karakter non-ASCII menggunakan gema?

  2. Menggunakan sed untuk menghapus blok teks

  3. Bagaimana cara menghapus awalan kata menggunakan grep?

  1. Hapus karakter tertentu menggunakan awk atau sed

  2. Cara menghapus \r karakter dengan sed

  3. Bagaimana cara mengubah file di tempat menggunakan awk? (seperti halnya sed -i)