Zde nabízená řešení mi nefungovala. Možná byl můj problém jiný, ale potřeboval jsem odstranit ASCII barvy a další znaky z jinak čistého ASCII textu.
Nicméně pro mě fungovalo následující:
Odstraňování únikových kódů z textu ASCII
sed -E 's/\x1b\[[0-9]*;?[0-9]+m//g'
V kontextu (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$
Zkusili jste
cat /bin/mkdir | tr -cd "[:print:]"
Myslím, že to problém vyřeší?
Pokud vás zajímá pouze textový obsah, můžete také použít
cat /bin/mkdir | strings
Víte, jaké kódování soubor aktuálně používá? Pokud ano, můžete jej převést pomocí iconv. Je to nástroj pro převod z jednoho kódování znaků na jiné. Pokud je tedy původní soubor v UTF-8 a chcete jej převést na ASCII, můžete použít následující:
iconv -f utf8 -t ascii <inputfile>
Příkaz file ve vstupním souboru vám může sdělit aktuální kódování.
Zajímavé je, že existuje příkaz nazvaný enca, který udělá vše pro to, aby určil použité kódování znaků, pokud znáte jazyk obsahu souboru.
Tato další otázka může být odpovědí.
Zdá se, že to nefunguje s sed
. Možná tr
udělá?
tr -d '\200-\377'
Nebo s doplňkem:
tr -cd '\000-\177'