Как удалить этот символ “^” с энергией?

У меня есть некоторые файлы, которые повреждаются с этим символом:

^@

Это не часть строки; это не доступно для поиска. Как я заменяю этим символом ни с чем, или как я удаляю этот символ?

Вот строка в качестве примера из одного файла:

^@F^@i^@l^@e^@n^@a^@m^@e^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@ ^@:^@ ^@^M^@
60
задан 13.11.2013, 23:31

3 ответа

Вы могли попробовать:

  • %s/<CTRL-2>//g (на обычных ПК)

  • %s/<CTRL-SHIFT-2>//g (на Mac ПК)

где <CTRL-2> средства сначала придавливают CTRL на обычных ПК, сохраняя его, как придавлено, поражают 2, выпускают CTRL.

и <CTRL-SHIFT-2> средства сначала придавливают управление на Mac ПК, сохраняя его столь же придавленным, придавливают сдвиг на Mac ПК, сохраняя его, как придавлено, поражают 2, выпускают управление и сдвиг.

Наконец, обе из двух команд должны привести к %s/^@//g на экране. ^@ означает отдельный символ (ПУСТОЙ байт, который иначе не мог быть отображен), нет ^ сопровождаемый @, таким образом, Вы не можете просто ввести ^ и @ подряд в вышеупомянутой команде.

Эта команда удаляет весь ^@.

52
ответ дан 07.12.2019, 08:18

Я не думаю, что Ваши файлы повреждаются. Ваша строка в качестве примера похожа на него, содержит обычный текст с пустыми байтами между каждым символом. Это предполагает, что это - текстовый файл, это было закодировано в UTF-16, но метка порядка байтов отсутствует в запуске файла. См. http://en.wikipedia.org/wiki/Byte-order_mark

Предположим, что я открываю Notepad, ввожу слово 'имя файла' и сохраняю как Обратный порядок байтов Unicode. Шестнадцатеричный дамп этого файла похож на это:

fe ff 00 66 00 69 00 6c 00 65 00 6e 00 61 00 6d 00 65

Если я открываю этот файл в Vim, он выглядит хорошо - 'fe и следующие' байты, говорят Vim, как файл кодируется. Теперь предположите, что я создаю файл, содержащий ту же самую последовательность байтов, но без продвижения 'fe и следующие'. Vim вставляет ^ (или <00>, в зависимости от Вашей конфигурации) вместо пустых байтов; Блокнот вставляет пробелы.

Так, а не удаляют пустые указатели, необходимо действительно надеяться заставлять Vim интерпретировать файл правильно. Можно заставить Vim перезагружать файл с корректным кодированием командой:

:e ++enc=utf16

50
ответ дан 07.12.2019, 08:18

Тот 'символ' представляет Нулевой символ со значением ASCII 000.

Трудно удалить с энергией, попробовать

tr -d '\000' < file1 > file2
12
ответ дан 07.12.2019, 08:18

Теги

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