LINUX.ORG.RU

$ echo link= foo test bar test baz | sed -re 's:^link=.*test\s*(.*):\1:'
baz

$ echo link= foo test bar test baz | perl -npe 's:^link=.*?test\s*(.*):\1:'
bar test baz
gv ()

Если я правильно понял задачу:

$ echo "link=this is url and test rest of string" | sed 's/\(^link=\)\(.*\)test\s*\(.*\)/\1\3/'
link=rest of string
DeVliegendeHollander ★★ ()
Ответ на: комментарий от DeVliegendeHollander

А если нужно и само слово test, то:

$ echo "link=this is url and test rest of string" | sed 's/\(^link=\)\(.*\)\(test.*\)/\1\3/'
link=test rest of string
DeVliegendeHollander ★★ ()
Ответ на: комментарий от DeVliegendeHollander

Только у меня в тексте вместо пробелов подчеркивание _, наверно по этому не срабатывает, а так спасибо большое, буду думать как подправить

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

Подчёркивания никак не влияют на работу sed — всё должно работать:

$ echo "link=this_is_url_and_test_rest_of_string" | sed 's/\(^link=\)\(.*\)\(test.*\)/\1\3/'
link=test_rest_of_string
DeVliegendeHollander ★★ ()
Ответ на: комментарий от laragofplay

echo 'link=this_is_url_and_test_rest_of_string' | sed -e '/link=/ s:=.*_test_:=test_:'
Элементарно же.

quantum-troll ★★★★★ ()
Ответ на: комментарий от DeVliegendeHollander

подскажите пожалуйста как сделать также только с echo «link=this_is _url/and/test_rest_of_string»

laragofplay ()
Ответ на: комментарий от laragofplay
% echo "link=this_is _url/and/test_rest_of_string" | sed -e '/link=/ s:=.*\(test_\):=\1:'
link=test_rest_of_string

Так?

quantum-troll ★★★★★ ()
Ответ на: комментарий от laragofplay

У тебя слэш в строке мешает правильному парсингу. Смотри, как quantum-troll написал.

Подсказка: в sed можно слэши заменять на некоторые другие символы — в частности, на : # и др.

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

Например, так:

$ echo "link=link=this_is _url/and/test_rest_of_string" | sed 's#\(^link=\)\(.*\)\(test.*\)#\1\3#'
link=test_rest_of_string

Или с двоеточиями, как у quantum-troll, тоже работает.

DeVliegendeHollander ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.