как удалить "^ @" из текстовых файлов в Unix? - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь удалить «^ @» из нескольких текстовых файлов на платформе Unix. Я уже нашел это решение, но оно не работает для моего случая. Я также использовал sed -i -e 's/^@//g' testfile.txt и dos2unix testfile.txt. примерные данные ставятся здесь .

Любое предложение будет оценено.

1 Ответ

0 голосов
/ 29 октября 2018

^@, который вы видите, не является литеральной строкой. Это escape-код для NUL (символьное значение 0). Если вы хотите удалить их все:

tr -d '\0' <test.txt >newfile.txt

Для диагностики подобных вещей удобна утилита od (восьмеричный дамп). Я запустил это в тестовом файле, который вы связали, чтобы подтвердить, что они были NUL:

$ od -c test.txt | head
0000000  \0   A  \0   i  \0   r  \0   Q  \0   u  \0   a  \0   l  \0   i
0000020  \0   t  \0   y  \0   S  \0   t  \0   a  \0   t  \0   i  \0   o
0000040  \0   n  \0   E  \0   o  \0   I  \0   C  \0   o  \0   d  \0   e
0000060  \0  \n  \0   D  \0   E  \0   H  \0   E  \0   0  \0   4  \0   4
*
0000400  \0  \n  \0   D  \0   E  \0   H      \0   E  \0   0  \0   4  \0
0000420   4  \0  \n  \0   D  \0   E  \0   H  \0   E  \0   0  \0   4  \0
*
0422160   4  \0  \n  \n
0422164
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...