2013-02-14 4 views
2

У меня есть плоский файл, созданный из чужого программного обеспечения. Они вставляют нулевой символ^@ в определенные позиции файла. Я хочу заменить их чем-то другим, например -9. Как эффективно искать и заменять этот символ в терминале в Mac OS X?Замена нулевого символа^@ в плоском файле

Спасибо.

Существует еще один пост адресации this question в Linux.

+0

Использование Vim. :% s/^ @/- 9/g – Scott

ответ

3

С sed:

sed 's/\x0/-9/g' filename > newfile 
+0

Спасибо! это действительно хорошо работает, как и в других сообщениях. Теперь я понял, что пробовал эту команду на mac osx, и поэтому у меня все еще были проблемы. Я пересмотрел свой вопрос. Вы знаете ответ на этот вопрос? – user1575175

+0

Это отлично работает на osx. – Anew

+2

К сожалению, на OSX 10.9.4 это не тот случай. 'printf" \ 1 \ 0 \ 1 "| sed 's/\ x0/-9/g' | hexdump' будет по-прежнему выдавать: '0000000 01 00 01 0a 0000004'. Информация о версии не находится в '/ usr/bin/sed', но, видимо, это BSD-сборка с 2005 года. Вместо этого вы можете попробовать установить GNU sed. –

7

(Для поддержания SO традиции предлагают несколько ответов с различными инструментами для написания сценариев оболочки вопросы):

С tr:

tr -d '\0' 
+0

Знаете ли вы решение mac osx для этого? – user1575175

+1

Это отлично работает и на osx. +1 для сохранения традиций SO :) – Anew

+0

Не понимаю. Таким образом, это заменит все нулевые символы пробелом, правильно? Но что, если мне нужно другое строковое значение? – user1575175

Смежные вопросы