따옴표 사이의 모든 내용을 추출합니다.

따옴표 사이의 모든 내용을 추출합니다.

grep이나 sed를 사용하여 다음과 같은 문자열에서 URL을 추출하려고 합니다.javascript:open_window("http://www.example.com/somescript.ext?withquerystring=true");

자바스크립트 링크는 내가 제어할 수 없는 외부 애플리케이션에 의해 매번 생성되므로 이를 사용하려면 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

관련 정보