grepまたはsedを使用して、次の文字列からURLを抽出しようとしています。javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");
JavaScriptリンクは、私が制御できない外部アプリケーションによって毎回生成されるため、それを使用するにはURLを抽出する必要があります。私はgrepとsedの組み合わせを何度も試しましたが、成功しませんでした。
答え1
単にGNUを使用してくださいgrep
:
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