GNU/Linux >> Linux の 問題 >  >> Linux

sed を使用して非 ASCII 文字を削除する方法

ここで提供される解決策は私にはうまくいきませんでした。おそらく私の問題は異なっていたのでしょうが、純粋な ASCII テキストから ASCII の色やその他の文字を削除する必要がありました。

ただし、次の方法でうまくいきました:

ASCII テキストからエスケープ コードを取り除く

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

コンテキスト内 (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$

試しましたか

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

問題は解決したと思いますか?

テキスト コンテンツのみに興味がある場合は、

も使用できます。
cat /bin/mkdir | strings

ファイルが現在使用しているエンコーディングを知っていますか?その場合は、iconv を使用して変換できます。ある文字エンコーディングから別のエンコーディングに変換するユーティリティです。したがって、元のファイルが UTF-8 であり、ASCII に変換したい場合は、次を使用できます:

iconv -f utf8 -t ascii <inputfile>

入力ファイルの file コマンドは、現在のエンコーディングを教えてくれるかもしれません。

興味深いことに、enca というコマンドがあり、ファイルの内容の言語がわかっている場合に、使用されている文字エンコーディングを決定するために最善を尽くします。

この別の質問が答えかもしれません。


これは sed では機能しないようです .おそらく tr しますか?

tr -d '\200-\377'

または補数を付けて:

tr -cd '\000-\177'

Linux
  1. Debian:dpkg を使用して DEB パッケージをインストールまたは削除する方法

  2. Partedコマンドを使用してディスクパーティションを削除する方法

  3. sed を使用してテキスト ブロックを削除する

  1. シェルコマンドを使用してASCIIファイルの最初のN行を削除するにはどうすればよいですか?

  2. sed - sed を使用して正規表現グループを作成する方法

  3. rm を使わずにファイルを削除するには?

  1. コマンドラインを使用してLinuxでユーザーを削除する方法

  2. echo を使用して非 ASCII 文字を書き込むにはどうすればよいですか?

  3. awk または sed を使用して特定の文字を削除する