На этот вопрос уже есть ответ:
У меня есть строка как первый URL, второй URL, третий URL
и хотел бы извлечь только url
после слова second
в OS X Terminal (только первое вхождение). Как я могу это сделать?
В моем любимом редакторе я использовал регулярное выражение / second (url) /
и использовал $ 1
для его извлечения, я просто не знаю, как это сделать в Терминале.
Имейте в виду, что url
является фактическим URL, я буду использовать одно из следующих выражений, чтобы сопоставить его: Regex для соответствия URL
echo 'first url, second url, third url' | sed 's/.*second//'
Edit: I misunderstood. Лучше:
echo 'first url, second url, third url' | sed 's/.*second \([^ ]*\).*/\1/'
или:
echo 'first url, second url, third url' | perl -nle 'm/second ([^ ]*)/; print $1'
В другом ответе при условии, что вы по-прежнему остаетесь со всем, что находится после желаемого URL. Поэтому я предлагаю вам следующее решение.
echo 'first url, second url, third url' | sed 's/.*second \(url\)*.*/\1/'
В sed вы группируете выражение, избегая скобок вокруг него (стандарт POSIX).