我正在尝试使用 grep 或 sed 从看起来像这样的字符串中提取 urljavascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");
javascript 链接每次都是由我无法控制的外部应用程序生成的,因此我必须提取 URL 才能使用它。我尝试过使用 grep 和 sed 的一大堆组合,但都失败了,但没有成功。
答案1
简单地使用 GNUgrep
:
s='javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'
grep -Eo 'http:[^"]+' <<<"$s"
http://www.example.com/somescript.ext?withquerystring=true
答案2
使用sed
:
sed -E 's/.*\("(.*)"\).*/\1/'
例子:
echo 'javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true")' | sed -E 's/.*\("(.*)"\).*/\1/'
http://www.example.com/somescript.ext?withquerystring=true
答案3
您可以cut
指定“””(双引号)作为分隔符来输出。
$ invar='javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'
$ echo $invar | cut -d '"' -f2
http://www.example.com/somescript.ext?withquerystring=true
答案4
我通过使用下面的 sed 命令实现了相同的效果
命令
echo 'javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");'| sed "s/.*(//g" l.txt | sed 's/"//g' | sed "s/).*//g"
输出
http://www.example.com/somescript.ext?withquerystring=true