sed ошибка в FreeBSD и Solaris (sed ошибка в FreeBSD и Solaris)

Модератор: Модераторы разделов

socr
Сообщения: 35
ОС: Ubuntu Linux

sed ошибка в FreeBSD и Solaris

Сообщение socr »

#!/bin/sh
sed '/ name/ c\ first name' $1 >> tmp
mv tmp $1
rm -f tmp

вызывает ошибку
sed: 1: "/name/ c\first name": extra characters after \ at the end of c command
Может кто объяснит в чём проблема и как исправить??
Заранее спасибо
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: sed ошибка в FreeBSD и Solaris

Сообщение diesel »

socr писал(а):
10.11.2008 11:29
#!/bin/sh
sed '/ name/ c\ first name' $1 >> tmp
mv tmp $1
rm -f tmp

вызывает ошибку
sed: 1: "/name/ c\first name": extra characters after \ at the end of c command
Может кто объяснит в чём проблема и как исправить??
Заранее спасибо

а что по твоему это должно делать?
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

diesel писал(а):
10.11.2008 11:51
socr писал(а):
10.11.2008 11:29
#!/bin/sh
sed '/ name/ c\ first name' $1 >> tmp
mv tmp $1
rm -f tmp

вызывает ошибку
sed: 1: "/name/ c\first name": extra characters after \ at the end of c command
Может кто объяснит в чём проблема и как исправить??
Заранее спасибо

а что по твоему это должно делать?

Это не только должно но и делат в Ubuntu. Если в строке есть name меняет всю строку на first name
А вот на Solaris и FreeBSD выдаёт ошибку..
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: sed ошибка в FreeBSD и Solaris

Сообщение diesel »

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | ./tmp1.sh
first name
smth here
diesel@indie:~$ cat tmp1.sh
#!/bin/bash

sed -e '/name/c\
first name'



там в man'е new line есть ....она судя по всему должна быть :)
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

diesel писал(а):
10.11.2008 12:16

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | ./tmp1.sh
first name
smth here
diesel@indie:~$ cat tmp1.sh
#!/bin/bash

sed -e '/name/c\
first name'



там в man'е new line есть ....она судя по всему должна быть :)

Тогда глупый вопрос: А почему в UBUNTU всё работает?
И как тогда такой sed (с с параметром запустить с терминала)?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: sed ошибка в FreeBSD и Solaris

Сообщение diesel »

socr писал(а):
10.11.2008 12:19
diesel писал(а):
10.11.2008 12:16

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | ./tmp1.sh
first name
smth here
diesel@indie:~$ cat tmp1.sh
#!/bin/bash

sed -e '/name/c\
first name'



там в man'е new line есть ....она судя по всему должна быть :)

Тогда глупый вопрос: А почему в UBUNTU всё работает?

в убунту другая реализация sed'а, в деталях они наверное отличаются, у мну тоже не работает твой убунтовский вариант на Маке. если ты сделаешь проще: sed -e '/ name/s/^.*$/first name/g' скорее всего будет работать одинаково везде, или же с новой строчки будешь писать - тоже вроде работает.
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

diesel писал(а):
10.11.2008 12:23
socr писал(а):
10.11.2008 12:19
diesel писал(а):
10.11.2008 12:16

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | ./tmp1.sh
first name
smth here
diesel@indie:~$ cat tmp1.sh
#!/bin/bash

sed -e '/name/c\
first name'



там в man'е new line есть ....она судя по всему должна быть :)

Тогда глупый вопрос: А почему в UBUNTU всё работает?

в убунту другая реализация sed'а, в деталях они наверное отличаются, у мну тоже не работает твой убунтовский вариант на Маке. если ты сделаешь проще: sed -e '/ name/s/^.*$/first name/g' скорее всего будет работать одинаково везде, или же с новой строчки будешь писать - тоже вроде работает.

Тогда подскажите пожалуйста как в терминале писать с новой строки?
Кстате на Маке у меня работает
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: sed ошибка в FreeBSD и Solaris

Сообщение diesel »

socr писал(а):
10.11.2008 12:27
Тогда подскажите пожалуйста как в терминале писать с новой строки?

да просто
sed -e '/ name/c\<вот тут жмешь ентер>
>first name' filename

socr писал(а):
10.11.2008 12:27
Кстате на Маке у меня работает

а у меня так же как ты показал:

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | sed -e '/name/c\ first name'
sed: 1: "/name/c\ first name\n": extra characters after \ at the end of c command
diesel@indie:~$ uname -a
Darwin indie.local 9.5.0 Darwin Kernel Version 9.5.0: Wed Sep  3 11:29:43 PDT 2008; root:xnu-1228.7.58~1/RELEASE_I386 i386
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

diesel писал(а):
10.11.2008 12:30
socr писал(а):
10.11.2008 12:27
Тогда подскажите пожалуйста как в терминале писать с новой строки?

да просто
sed -e '/ name/c\<вот тут жмешь ентер>
>first name' filename


Такой запуск вызывает ошибку ": command c expects \ followed by text

Версия МАКА какая?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: sed ошибка в FreeBSD и Solaris

Сообщение diesel »

socr писал(а):
10.11.2008 12:36
diesel писал(а):
10.11.2008 12:30
socr писал(а):
10.11.2008 12:27
Тогда подскажите пожалуйста как в терминале писать с новой строки?

да просто
sed -e '/ name/c\<вот тут жмешь ентер>
>first name' filename


Такой запуск вызывает ошибку ": command c expects \ followed by text

Версия МАКА какая?

10.5.5

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | sed -e '/name/c\
> fist name'
fist name
smth here

вот прямо с терминала скопировал
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

diesel писал(а):
10.11.2008 12:38
socr писал(а):
10.11.2008 12:36
diesel писал(а):
10.11.2008 12:30
socr писал(а):
10.11.2008 12:27
Тогда подскажите пожалуйста как в терминале писать с новой строки?

да просто
sed -e '/ name/c\<вот тут жмешь ентер>
>first name' filename


Такой запуск вызывает ошибку ": command c expects \ followed by text

Версия МАКА какая?

10.5.5

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | sed -e '/name/c\
> fist name'
fist name
smth here

вот прямо с терминала скопировал

у меня не выдаёт command c expects \ followed by text
Спасибо сказали:
socr
Сообщения: 35
ОС: Ubuntu Linux

Re: sed ошибка в FreeBSD и Solaris

Сообщение socr »

socr писал(а):
10.11.2008 12:44
diesel писал(а):
10.11.2008 12:38
socr писал(а):
10.11.2008 12:36
diesel писал(а):
10.11.2008 12:30
socr писал(а):
10.11.2008 12:27
Тогда подскажите пожалуйста как в терминале писать с новой строки?

да просто
sed -e '/ name/c\<вот тут жмешь ентер>
>first name' filename


Такой запуск вызывает ошибку ": command c expects \ followed by text

Версия МАКА какая?

10.5.5

Код: Выделить всё

diesel@indie:~$ echo -ne "name\nsmth here\n" | sed -e '/name/c\
> fist name'
fist name
smth here

вот прямо с терминала скопировал

у меня не выдаёт command c expects \ followed by text

Diesel спасибо, нашёл как запустить, в БСД он ещё немного отличается :)
Только вот интересно почему в запуск различается, а описание одинаковое :(
Спасибо сказали: