LINUX.ORG.RU

подскажите по sed

 


0

1

А то что-то туплю.

Допустим есть такие данные

111
222
333
111

Нужно заменить 111 только ту что идет после 333 на что-то другое. Что-то туплю совсем.

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)
sed '/333/{N;s/333\n111/333\nother/}'
anonymous
()

Нужно заменить 111 только ту что идет после 333 на что-то другое. Что-то туплю совсем.

если текст небольшой, то можно всё загнать в память, например так:

$ echo "111
222
333
111" | sed -rn 'H;$!b;g;s/\n//;s/333\n111/REPLACED/;p'
111
222
REPLACED

emulek
()
Ответ на: комментарий от emulek

точнее

$ echo "111
222
333
111" | sed -rn 'H;$!b;g;s/\n//;s/(333\n)111/\1REPLACED/;p'
111
222
333
REPLACED

и при этом можно юзать multiline mode

$ echo "111
222
333
111" | sed -rn 'H;$!b;g;s/\n//;s/^(333\n)111/\1REPLACED/m;p'
111
222
333
REPLACED

emulek
()

sed не нужен

perl -e '$_ = "111
222
333
111"; s/(333)\n111/\1\nololo/; print "$_\n"'
burning_giraffes
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.