ここで提供される解決策は私にはうまくいきませんでした。おそらく私の問題は異なっていたのでしょうが、純粋な 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'