получать все до знака доллара, но также и при отсутствии знака доллара - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь использовать sed, чтобы получить все до знака доллара, вот так:

$$uhttp:///www.stackoverflow.com$$3blablabla

sed -r 's/\$\$u(http.*)(\$\$.*)/\1/g' thefile

Это дает мне ссылку.

Но если бы у меня было только это:

$$ uhttp: ///www.stackoverflow.com

Тот же sed не будет работать.

Если сделать последнюю часть необязательной, с "*" (ноль или более), не работает:

sed -r 's/\$\$u(http.*)(\$\$.*)*/\1/g'

1 Ответ

0 голосов
/ 27 августа 2018

Ваша команда не выполняется, потому что вам требуется второй набор знаков доллара для соответствия. Попробуйте это: сопоставьте «http», за которым следует один или несколько недолларовых символов .

sed -r 's/\$\$u(http[^$]+).*/\1/' thefile

Или еще проще

grep -Eo 'http[^$]+' thefile
...