Мои исходные данные содержат специальные символы, которые не читаются в формате. Может кто-нибудь помочь на ниже:Как заменить специальный символ в команде Unix
Команды судимое: СЕПГ 's /../ т/г' test.txt> test2.txt
Мои исходные данные содержат специальные символы, которые не читаются в формате. Может кто-нибудь помочь на ниже:Как заменить специальный символ в команде Unix
Команды судимое: СЕПГ 's /../ т/г' test.txt> test2.txt
вы можете использовать tr
держать только печатаемые символы:
tr -cd "[:print:]" <test.txt > test2.txt
Использует tr
опцию удаления на непечатаемых (критерии печати отрицается -c
опция)
Если вы хотите заменить эти специальные символы чем-то другим (например: X):
tr -c "[:print:]" "X" <test.txt > test2.txt
С sed
, вы можете попробовать, что заменить непечатаемые на X
:
sed -r 's/[^[:print:]]/X/g' text.txt > test2.txt
он работает на некоторых, но не на гольцов> 127 (может быть, потому, что я попробовал это версия для печати, как ▒!) на моей машине, в то время как tr
работает отлично.
примеры инлайн (Printf генерировать специальные символы + фильтр + од, чтобы показать байт):
$ printf "\x01ABC\x05\xff\xe0" | od -c
0000000 001 A B C 005 377 340
0000007
$ printf "\x01ABC\x05\xff\xe0" | sed "s/[^[:print:]]//g" | od -c
0000000 A B C 377 340
0000005
$ printf "\x01ABC\x05\xff\xe0" | tr -cd "[:print:]" | od -c
0000000 A B C
0000003