Sed и вставка текста в нужное место.

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

Аватара пользователя
skeletor
Сообщения: 1224
Статус: Диффурщик
ОС: FreeBSD

Sed и вставка текста в нужное место.

Сообщение skeletor »

Читал про команду "а\", но не могу разобраться, как её пользоваться. Подскажите, какие у неё параметры и как она записывается. Вылазит ошибка

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

[skeletor@host]$ sed '/bad_guys/ a \qqq' fire.wall > xc
sed: 1: "/bad_guys/ a \qqq": extra characters after \ at the end of a command
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"
Спасибо сказали:

Аватара пользователя
destr
Сообщения: 128
ОС: Debian

Re: Sed и вставка текста в нужное место.

Сообщение destr »

Пробел уберите перед a
echo "bad_guys" | sed '/bad_guys/a \qqq'

Сейчас попробовал, не в пробеле дело, чёт даже вашу ситуацию никак не повторю
Спасибо сказали:

Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: Sed и вставка текста в нужное место.

Сообщение MUTOgen »

skeletor писал(а):
21.07.2008 15:59
Читал про команду "а\", но не могу разобраться, как её пользоваться. Подскажите, какие у неё параметры и как она записывается. Вылазит ошибка

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

[skeletor@host]$ sed '/bad_guys/ a \qqq' fire.wall > xc
sed: 1: "/bad_guys/ a \qqq": extra characters after \ at the end of a command

а чего вы хотите добиться?
Спасибо сказали:

Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Sed и вставка текста в нужное место.

Сообщение nesk »

MUTOgen писал(а):
21.07.2008 19:43
а чего вы хотите добиться?

очевидно добавить строку qqq после строки bad_guys
или что то в этом проде.
Человек просто ИЗУЧАЕТ sed
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:

Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: Sed и вставка текста в нужное место.

Сообщение MUTOgen »

nesk писал(а):
21.07.2008 20:04
MUTOgen писал(а):
21.07.2008 19:43
а чего вы хотите добиться?

очевидно добавить строку qqq после строки bad_guys
или что то в этом проде.
Человек просто ИЗУЧАЕТ sed

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

1) Если надо вставить строку qqq после bad_guys то пишем
sed '/bad_guys/ a\qqq' fire.wall > xc

2) Если надо вставить слово после заданного по ходу строки, то целесообразней не использовать 'a'. А сделать:
sed 's/bad_guys/bad_guys qqq/' fire.wall > xc
Спасибо сказали:

Аватара пользователя
skeletor
Сообщения: 1224
Статус: Диффурщик
ОС: FreeBSD

Re: Sed и вставка текста в нужное место.

Сообщение skeletor »

MUTOgen писал(а):
21.07.2008 19:43
skeletor писал(а):
21.07.2008 15:59
Читал про команду "а\", но не могу разобраться, как её пользоваться. Подскажите, какие у неё параметры и как она записывается. Вылазит ошибка

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

[skeletor@host]$ sed '/bad_guys/ a \qqq' fire.wall > xc
sed: 1: "/bad_guys/ a \qqq": extra characters after \ at the end of a command

а чего вы хотите добиться?

А разве непонятно из заголовка темы чего я хочу?
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"
Спасибо сказали:

Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: Sed и вставка текста в нужное место.

Сообщение MUTOgen »

skeletor писал(а):
21.07.2008 20:57
MUTOgen писал(а):
21.07.2008 19:43
skeletor писал(а):
21.07.2008 15:59
Читал про команду "а\", но не могу разобраться, как её пользоваться. Подскажите, какие у неё параметры и как она записывается. Вылазит ошибка

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

[skeletor@host]$ sed '/bad_guys/ a \qqq' fire.wall > xc
sed: 1: "/bad_guys/ a \qqq": extra characters after \ at the end of a command

а чего вы хотите добиться?

А разве непонятно из заголовка темы чего я хочу?

"нужное место" - поятие растяжимое. я уже привел 2 варианта интерпритации.
Спасибо сказали:

Аватара пользователя
skeletor
Сообщения: 1224
Статус: Диффурщик
ОС: FreeBSD

Re: Sed и вставка текста в нужное место.

Сообщение skeletor »

MUTOgen писал(а):
21.07.2008 20:27
nesk писал(а):
21.07.2008 20:04
MUTOgen писал(а):
21.07.2008 19:43
а чего вы хотите добиться?

очевидно добавить строку qqq после строки bad_guys
или что то в этом проде.
Человек просто ИЗУЧАЕТ sed

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

1) Если надо вставить строку qqq после bad_guys то пишем
sed '/bad_guys/ a\qqq' fire.wall > xc

2) Если надо вставить слово после заданного по ходу строки, то целесообразней не использовать 'a'. А сделать:
sed 's/bad_guys/bad_guys qqq/' fire.wall > xc

Я сформулировал задачу нормально. А то что вы неправильно читаете или хотите что бы вам писали трактаты на вопросы, которые проще простого, тут уж ... Теорию по Sed'y вы вроде бы читали, так же как и я. Да и практика тоже недалеко ушла. Я уже какие можно комбинации перепробовал и не работает!

1 - не работает! Вы сами-то хоть проверяли?
2 - это не то!

=====================

А теперь развязка. Рабочий код (почему работает именно так, а не иначе - непонятно).

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

sed '/qqqq/ \a
TEXT
' filename > otherfile

И не надо рассказывать, что я неправильно формулирую задачу да и ещё неправильно.

Всем спасибо, разобрался, тему можно закрывать.
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"
Спасибо сказали:

Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: Sed и вставка текста в нужное место.

Сообщение MUTOgen »

skeletor писал(а):
21.07.2008 21:09
MUTOgen писал(а):
21.07.2008 20:27
nesk писал(а):
21.07.2008 20:04
MUTOgen писал(а):
21.07.2008 19:43
а чего вы хотите добиться?

очевидно добавить строку qqq после строки bad_guys
или что то в этом проде.
Человек просто ИЗУЧАЕТ sed

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

1) Если надо вставить строку qqq после bad_guys то пишем
sed '/bad_guys/ a\qqq' fire.wall > xc

2) Если надо вставить слово после заданного по ходу строки, то целесообразней не использовать 'a'. А сделать:
sed 's/bad_guys/bad_guys qqq/' fire.wall > xc

Я сформулировал задачу нормально. А то что вы неправильно читаете или хотите что бы вам писали трактаты на вопросы, которые проще простого, тут уж ... Теорию по Sed'y вы вроде бы читали, так же как и я. Да и практика тоже недалеко ушла. Я уже какие можно комбинации перепробовал и не работает!

1 - не работает! Вы сами-то хоть проверяли?
2 - это не то!

=====================

А теперь развязка. Рабочий код (почему работает именно так, а не иначе - непонятно).

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

sed '/qqqq/ \a
TEXT
' filename > otherfile

И не надо рассказывать, что я неправильно формулирую задачу да и ещё неправильно.

Всем спасибо, разобрался, тему можно закрывать.

о том и речь. в вашей "развязке" совсем иной смысл нежели в первом посте. по поводу моих вариатов все проверено. и даже четко разложено

Код:

root[~]# sed '/you/a\qqq' 10 fgffff out fgfd stay yes of couse you now qqq how noise root[~]# sed 's/you/you qqq/' 10 fgffff out fgfd stay yes of couse you qqq now how noise root[~]#

не то что в постановке вопроса... а если в моих вариантах не тот смысл - это только ваша вина
Спасибо сказали:

wolshtein
Сообщения: 2

Re: Sed и вставка текста в нужное место.

Сообщение wolshtein »

skeletor писал(а):
21.07.2008 15:59
Читал про команду "а\", но не могу разобраться, как её пользоваться. Подскажите, какие у неё параметры и как она записывается. Вылазит ошибка

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

[skeletor@host]$ sed '/bad_guys/ a \qqq' fire.wall > xc
sed: 1: "/bad_guys/ a \qqq": extra characters after \ at the end of a command


Приветствую! Понятно что пост уже давнишний, но на какой системе выдавало такую ошибку?
В ubunte команда проходит на ура, а на сервере под FreeBSD 9.0-RELEASE-p4, выдает аналогичную ошибку. Пробовал разными способами, ощущения что разные версии sed.

Код:

echo "1810: All _sb_main EPCoffice NewTwoMon NewPPP-unstable3"| sed '/1810/a\ТEXT' 1810: All _sb_main EPCoffice NewTwoMon NewPPP-unstable3 ТEXT echo "1810: All _sb_main EPCoffice NewTwoMon NewPPP-unstable3"| sed '/1810/a\ТEXT' sed: 1: "/1810/a\ТEXT": extra characters after \ at the end of a command
Спасибо сказали:

Аватара пользователя
skeletor
Сообщения: 1224
Статус: Диффурщик
ОС: FreeBSD

Re: Sed и вставка текста в нужное место.

Сообщение skeletor »

Потому что нужно с переносом строки делать, а не в одну строку.
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Sed и вставка текста в нужное место.

Сообщение drBatty »

wolshtein писал(а):
15.07.2013 15:01
ощущения что разные версии sed.

так и есть: gnu sed воспринимает "\q" как "q", и потому всё работает. А обычная sed не воспринимает.

В любом случае это ошибка, должно быть

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

sed '/bad_guys/ a qqq' fire.wall > xc

или

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

sed '/bad_guys/ a \
qqq' fire.wall > xc
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

wolshtein
Сообщения: 2

Re: Sed и вставка текста в нужное место.

Сообщение wolshtein »

Спасибо! Так и есть, надо переносить на новую строку.
Спасибо сказали: