Обработка управляющих символов

Можно установить энергию как редактор командной строки и затем поразить ESC и переход вокруг стиля энергии (вперед, назад, конец, $, 0, и т.д.)

2
14.01.2011, 15:48
4 ответа

Можно также использовать tr команда. Например:

Удалить управляющий символ:

tr -d '\033' < file

Заменять управляющий символ другим:

tr '\033' 'x' < file

Если Вы не уверены, каково значение управляющего символа, выполните восьмеричный дамп, и это распечатает его:

$ cat file
hello
^[
world

$ od -b file    
0000000 150 145 154 154 157 012 033 012 167 157 162 154 144 012
0000016

Так значение управляющего символа ^[ \033.

4
27.01.2020, 21:53

Эта острота жемчуга сделает, задание - остерегается, это изменит файл:

perl -i -pe 's#\x{0003}#some_string#g' /path/to/log/file

Если Вы хотите заменить много символов кодами символов между указанным диапазоном:

echo {A..Z} | perl -i -pe 's#[\x{0040}-\x{0047}]#P#g'
P P P P P P P H I J K L M N O P Q R S T U V W X Y Z 

(эхо {A.. Z} производит строку буквенных символов в ударе),

2
27.01.2020, 21:53
  • 1
    И если Вы не хотите изменять файл, просто отбросьте -i использовать жемчуг в качестве фильтра. –  Gilles 'SO- stop being evil' 15.01.2011, 00:31

Это заменит все непечатаемые символы a #

sed 's/[^[:print:]]/#/g' logfile
1
27.01.2020, 21:53

Я не уверен, понимаю ли я то, что Вы хотите, но если это должно заменить случаи последовательных шестнадцатеричных байтов 0x00 0x03, это должно работать:

$ echo '0 61 20 00 03 0A' | xxd -r | sed 's/\x00\x03/test/g' 
a test
0
27.01.2020, 21:53

Теги

Похожие вопросы