2015-10-24 2 views
0

У меня есть текстовый файл, содержащий символы нежелательной почты после некоторых строк. Насколько я знаю, это символ 0 (не '0'), хотя я не уверен. Когда я открываю файл в VI одна такая строка выглядит следующим образом:Удалить 0 символов

ESH6^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ 

Я заинтересован только в "ESH6" части этой линии, я не хочу, чтобы отдохнуть. Если я делаю hexdump -C, что линия выглядит следующим образом (hexdump -C foo.txt | head -n 2, то "49705" является частью другой линии):

00000000 45 53 48 36 00 00 00 00 00 00 00 00 00 00 00 00 |ESH6............| 
00000010 00 00 00 00 0a 0a 34 39 37 30 35 0a 0a 0a 0a 45 |......49705....E| 

Как я могу удалить все экземпляры этого символа из файла?

+0

Обратите внимание, что вы можете получить 'vi'-подобный вывод для визуализации управляющих символов из командной строки с помощью' cat -et'; например, 'head -c 3 mklement0

ответ

3

Используйте tr команду:

tr -d '\0' <foo.txt> output 

Это удаляет (-d) все нулевые байты ('\0') из стандартного ввода и записывает все остальное на стандартный вывод. Команда tr является чистым фильтром; он только считывает стандартный ввод и записывает только на стандартный вывод.