use*_*149 3 regex string bash shell grep
我想使用 shell/bash 脚本从字符串中提取 url,如果字符串中有多个 url,则只应返回第一个。
我在下面提供了一些输入和输出字符串的示例。我猜我需要做一些正则表达式,但我不太熟悉如何在 bash/shell 中做到这一点?
Input: Take a look at this site: http://www.google.com/ and you'll find your answer
Output: http://www.google.com/
Input: http://www.google.com
Output: http://www.google.com
Input: Check out http://www.bing.com and http://www.google.com
Output: http://www.bing.com
Input: Grettings, visit <http://www.mywebsite.com> today!
Output: http://www.mywebsite.com
Run Code Online (Sandbox Code Playgroud)
尝试这个:
grep -Eo 'http://[^ >]+' yourFile|head -1
Run Code Online (Sandbox Code Playgroud)
例如:
kent$ echo "Check out http://www.bing.com and http://www.google.com"|grep -Eo 'http://[^ >]+'|head -1
http://www.bing.com
kent$ echo "Grettings, visit <http://www.mywebsite.com> today"|grep -Eo 'http://[^ >]+'|head -1
http://www.mywebsite.com
Run Code Online (Sandbox Code Playgroud)