LINUX.ORG.RU

Каких двух слов-то? Что ты в итоге хочешь?

Yorween
()

Через sed, наверное, можно, но я бы такое через awk делал бы.

Bfgeshka ★★★★★
()

Если нужно заменить bbb и следующее слово до пробела на bbb blabla, то

echo "aaa testA bbb testB ccc testC" | sed 's/bbb .+/bbb blabla /'
aaa testA bbb testB ccc testC

Yorween
()

Ну заменяет же. Напиши, что ты хочешь получить вместо «aaa testA bbb blabla testC».

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

Спасибо, вроде именно то что нужно, получить как раз хотел «aaa testA bbb blabla ccc testC»

screamager
() автор топика
Ответ на: комментарий от Yorween

Все же не совсем подходит, если будет так:

$ echo "aaa testA bbb /path/to/file ccc testC" | sed 's/bbb \w* /bbb blabla /'
aaa testA bbb /path/to/file ccc testC

то замена уже не происходит(

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

Но не работает если это конец строки:

echo "aaa testA bbb /path/to/file" | sed 's/bbb \(\/\|\w\)* /bbb blabla /'
aaa testA bbb /path/to/file
screamager
() автор топика
Ответ на: комментарий от Yorween

Спасибо, странно, я подобное пробовал, но видимо только в с вариантом в конце строки, поэтому не работало, и отбросил.

Окончательный вариант:

echo "aaa testA bbb /path/to/file ccc testC" | sed 's/bbb [^ ]*\b/bbb blabla /'
aaa testA bbb blabla  ccc testC

echo "aaa testA bbb /path/to/file" | sed 's/bbb [^ ]*\b/bbb blabla /'
aaa testA bbb blabla
screamager
() автор топика
Ответ на: комментарий от legolegs

Его пример это тоже, что и твой, потому что исключен пробел, а значит между пробелом после bbb и до пробела до слова после регуляки должен быть не пробел. Пустую строку не пропустит.

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

Пропустит:

echo "aaa testA bbb  ccc testC" | sed 's/bbb [^ ]* /bbb blabla /'
aaa testA bbb blabla ccc testC
legolegs ★★★★★
()
Ответ на: комментарий от teod0r

Можно так:


$ echo 'aaa testA bbb "/pa th/t o/file" ccc testC' | sed '/"/s/bbb "[^"]*"/bbb blabla/;s/bbb [^ ]*\b/bbb blabla/'
aaa testA bbb blabla ccc testC
$ echo "aaa testA bbb /path/to/file ccc testC" | sed '/"/s/bbb "[^"]*"/bbb blabla/;s/bbb [^ ]*\b/bbb blabla/'
aaa testA bbb blabla ccc testC

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