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