引用符間のすべての内容を抽出します。

引用符間のすべての内容を抽出します。

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

関連情報