Удалите символы ^ H и ^ M из файла, используя сценарии оболочки Linux - PullRequest
11 голосов
/ 29 июня 2011

Как удалить символы ^ H и ^ M из файла с помощью сценариев оболочки Linux?

^[[0^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H   rcv-packets: 0
^[[0^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H^H ^H      rcv-errs: 0
     rcv-drop: 0
     rcv-fifo: 0
     rcv-frame: 0

Ответы [ 6 ]

22 голосов
/ 29 июня 2011

То, что вы видите, это управляющие символы, вы можете просто удалить их с помощью tr

cat your_file |
tr -d '\b\r'

это лучше:

tr -d '\b\r' < your_file
6 голосов
/ 29 июня 2011

На ум сразу приходят два метода:

  • tr -d <kbd>control</kbd>+<kbd>v</kbd> <kbd>control</kbd>+<kbd>h</kbd>
  • sed 's/<kbd>control</kbd>+<kbd>v</kbd> <kbd>control</kbd>+<kbd>h</kbd>//g'

Вот оба в действии:

$ od -c test
0000000  \b   h   e   l   l   o  \b   t   h   e   r   e  \b  \n
0000016
$ sed 's/^H//g' < test | od -c
0000000   h   e   l   l   o   t   h   e   r   e  \n
0000013
$ tr -d ^H < test | od -c
0000000   h   e   l   l   o   t   h   e   r   e  \n
0000013
2 голосов
/ 04 июня 2013

Для удаления символов ^ M, появляющихся в конце каждой строки, я обычно делаю это в редакторе vi.

:%s/.$//g

Он просто удаляет последний символ каждой строки независимо от того, что это за символ.Это решило мой провлем.

0 голосов
/ 29 января 2019

, если вы хотите изменить исходный файл, сделайте следующее:

sed -i '.bak' 's/^M//g ; s/^H//g' test.md

(^ M - control+v control+m)
(^ H - control+v control+h)

много файлов, вы можете сделать это:

find source -name '*.md' | xargs sed -i '.bak' 's/^M//g ; s/^H//g'
0 голосов
/ 12 апреля 2016

Вы можете удалить все управляющие символы, используя tr, например,

tr -d "[:cntrl:]" file.txt

Чтобы исключить некоторые из них (например, окончания строк), отметьте: Удаление управляющих символов из файла .

0 голосов
/ 29 июня 2011

Используйте sed утилиту.См. Ниже в соответствии с примерами :

sed 's/%//' file > newfile
echo "82%%%" | sed 's/%*$//'
echo "68%" | sed "s/%$//" #assume % is always at the end.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...