Как удалить ^ [и все escape-последовательности в файле, используя сценарии оболочки linux - PullRequest
40 голосов
/ 30 июня 2011

Мы хотим удалить ^[ и все escape-последовательности.

sed не работает и выдает нам эту ошибку:

$ sed 's/^[//g' oldfile > newfile; mv newfile oldfile;
sed: -e expression #1, char 7: unterminated `s' command

$ sed -i '' -e 's/^[//g' somefile
sed: -e expression #1, char 7: unterminated `s' command

Ответы [ 11 ]

0 голосов
/ 16 февраля 2019

Ответ Тома Хейла оставил нежелательные коды, но послужил хорошей основой для работы.Добавление дополнительной фильтрации убрало остатки нежелательных кодов:

sed -e "s,^[[[(][0-9;?]*[a-zA-Z],,g" \
    -e "s/^[[[][0-9][0-9]*[@]//" \
    -e "s/^[[=0-9]<[^>]*>//" \
    -e "s/^[[)][0-9]//" \
    -e "s/.^H//g" \
    -e "s/^M//g" \
    -e "s/^^H//" \
        file.dirty > file.clean

Как это было сделано в не-GNU версии sed, где вы видите ^[, ^H и ^M, я использовалCtrl-V , Ctrl-V Ctrl-H и Ctrl-V Ctrl-M соответственно.^> - буквально карат (^) и символ больше, чем Ctrl - <. </p>

TERM = xterm использовался в то время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...