2016-07-14 3 views
-1

я иду в терминал, и я поставил в этой команде:Ошибка в SED команды в терминале

sed 's/X(Y)Z/A/g' filename.csv > newfile.csv 

Попытка заменить X(Y)Z с. Я думаю, что круглые скобки вокруг Y могут усложнять ситуацию.

Это ошибка, которую я получаю: ошибка RE: незаконная последовательность байтов.

Пожалуйста, дайте мне знать, что я могу сделать.

+0

Ваша команда, как написано, отлично работает для меня. – John1024

+0

Вам нужно будет добавить информацию о том, какую оболочку вы используете, какую систему вы используете и т. Д. Ваша команда работает для меня в нескольких разных системах. – Feneric

+0

Эй, я использую bash и am на Mac Pro 2015. Спасибо! – HSB

ответ

0

Я подозреваю, что проблема заключается в том, что ваш файл filename.csv содержит символы, отличные от ASCII (возможно, Unicode), и ваш sed ожидает ASCII.

Первое, что нужно сделать, это проверить файл и посмотреть, действительно ли это так. Я думаю, вы можете сделать это с помощью:

cat -vet filename.csv 

и вы, вероятно, увидите выделенные символы, которые не являются ASCII. В качестве альтернативы вы можете использовать iconv, чтобы попытаться преобразовать его в ASCII и посмотреть, дает ли он ошибку, потому что там есть символы, отличные от ASCII.

Если есть не-ASCII символов есть (например, акценты и неанглийских символов и несколько раз смайликов, апострофы и кавычки), вы либо должны сказать sed, что они есть, или удалить несчастными символы, если вам они действительно не нужны.

Чтобы посмотреть, что ожидается sed, вам необходимо запустить locale и вставить вывод в свой исходный вопрос, нажав edit под ним. Тогда вам может понадобиться изменить свой язык, чтобы сделать sed счастливее о Unicode, как я предложил в комментариях.

Надеюсь, что это поможет!

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