[완료]sed 로 원하는 주소만 추출하기.

nice72의 이미지

고수님들의 조언 부탁합니다.

아래와 같이 문자열이 있을때..

a href="http://dn-naverdic.ktics.co.kr/naverdic/f53462a8a09d72dcc2656dae898259fa/48745919/naverdic/eedic/25/25991.mp3" class="play"img src="http://static.naver.com/dic/tts/btn_listen.gif" width="67" height="22" alt="��������"

이 부분만..
http://dn-naverdic.ktics.co.kr/naverdic/f53462a8a09d72dcc2656dae898259fa
/48745919/naverdic/eedic/25/25991.mp3
추출할 수 있는 sed 명령어 형식이 있을까요?.
즉.. http부터 mp3까지만..manual부터 예제를 찾아봤지만..모두 실패했습니다.

콘솔에서 사전을 찾고 발음까지 들으려하니..어렵네요..

아시는분 있으시면 답변주세요..감사합니다.

duyoungk의 이미지

sed -ne "s/.*\(http:\/\/.*\.mp3\).*/\1/p" textfile

함 해보세요

nice72의 이미지

시험해보니..

원하는 양식은 맞는데.. mp3 뒤에

��������">

이게 붙어 있었습니다. 한번 더 부탁드립니다.

duyoungk의 이미지


양식이 꼭 a href=" " 이런식으로 되어있다면

sed -ne "s/.*a href=\"\([^\"]\+\).*/\1/p"

이런 식으로 a href="..." 안의 문자를 뽑아올 수도 있습니다

nice72의 이미지

아래 콘솔용 사전 스크립트입니다.

직접 시험해보시면..아실듯...제일 먼저 질문할때 스크립트를 올려두었으면 좋았을 텐데..죄송합니다.

./test.sh -l test [enter] 했을때.. http 부터 mp3까지만 나와야하는데.. 뒤에 특수문자가 붙어 출력됩니다.

쩝...

#!/bin/bash
# Copyright (c) 2007 Seong-Kook Shin
# Distributed in as-is condition. (No commercial use.)
# $Id: edict.sh,v 1.9 2007/08/24 01:42:45 cinsk Exp $

ENDIC_URL="http://endic.naver.com/small_search.nhn?&query="
EEDIC_URL="http://eedic.naver.com/small.naver?where=keyword&query="

W3M_PATH=`which w3m 2>/dev/null`
MPLAYER_PATH=`which mplayer 2>/dev/null`
DICT_PATH=`which dict 2>/dev/null`

PROGRAM_NAME="edict"
REVISION_STR='$Revision: 1.9 $'

# Default dictionary type
dictype=en

if test ! -x "$W3M_PATH"; then
echo "error: w3m(http://w3m.sourceforge.net/) not found." 1>&2
echo "error: Perhaps your system does not have w3m installed." 1>&2
echo "error: Or try to adjust the value of W3M_PATH in this script." 1>&2
exit 1
fi

if test -x "$DICT_PATH"; then
use_dict=1
fi

if test -x "$MPLAYER_PATH"; then
enable_audio=1
fi

repeat_count=1

function usage () {
cat < usage: $PROGRAM_NAME [OPTION]... WORD...
Show the definition of WORD

-t XX specify the dictionary type to use
ko - English to Korean dictionary (Naver)
en - English to English dictionary (Naver)

-l play the pronunciation audio
-n XX set repeat count of the audio play

-h display this help and exit
-V output version information and exit

Report bugs to .
EOF
exit 0
}

function exact_match () {
$DICT_PATH -P - -s exact -m >/dev/null
status=$?

if test $staus -eq 0; then
return 0
elif test $status -ne 20; then
echo "warning: dict failed with status $status" 1>&2
fi
return 1
}

OPTIND=0
while getopts "lt:hVn:" opt; do
case $opt in
'l')
option_listen=1
if test -z "$enable_audio"; then
echo "warning: mplayer not found. (Audio disabled)" 1>&2
fi
;;
'n')
repeat_count=$OPTARG
;;
't')
#echo "OPTARG: $OPTARG"
dictype=$OPTARG
;;
'h')
usage
;;
'V')
echo "$PROGRAM_NAME $REVISION_STR" | \
sed -e 's/\$//g' | sed -e 's/Revision: \([0-9.]*\) /version \1/'
exit 0
;;
*)
echo "Try \`-h' for more information." 1>&2
exit 1
;;
esac
done

if test $# -lt $OPTIND; then
echo "error: argument required" 1>&2
echo "Try \`-h' for more information." 1>&2
exit 1
fi

case $dictype in
en|EN)
dicurl=$EEDIC_URL
startmark='^\[dot'
dictname="Collins COBUILD Advanced Learner's English Dictionary 4th Edition"
;;
ko|KO|kr)
dicurl=$ENDIC_URL
startmark='(검색결과|\[btn_close_)'
dictname="동아 프라임 영한사전"
;;
*)
echo "error: unknown dictionary type \`$dictype'" 1>&2
exit 1
;;
esac

shift `expr $OPTIND - 1`

for word in "$@"; do
if test "$multi"; then echo ; fi
w3m -dump "${dicurl}${word}" | awk "
/검색결과가 없습니다./ { exit 1 }
/$startmark/ { doprint=1; next }
/^top$/ { exit }
{ if (doprint) print }"
#/^\[dot/,/^top/ { print }'
# | tail -n +2 | head -n -1
status=$?
#echo "STATUS: $status"
multi=1

if test "$status" -ne 0; then
if test "$use_dict"; then
$DICT_PATH -P - $word
exit $?
else
echo "$word: not found" 1>&2
exit 1
fi
fi

if test "$option_listen" -a "$enable_audio" -a $status -eq 0; then
# url=`w3m -dump_source "${EEDIC_URL}${word}" | grep http://dn-naverdic.ktics.co.kr/naverdic | sed "s/[^']*'\([^']*\)'.*$/\1/"`
# url=`w3m -dump_source "${EEDIC_URL}${word}" | grep mp3 | sed -ne "s/.*\(http:\/\/.*\.mp3\).*/\1/p"`
# url=`w3m -dump_source "${EEDIC_URL}${word}" | sed -ne "s/.*\(http:\/\/.*\.mp3\).*/\1/p"`
# url=`w3m -dump_source "${EEDIC_URL}${word}" | sed -ne "s/.*\(http:\/\/.*\.mp3\).*/\1/p"`
# url=`w3m -dump_source "${EEDIC_URL}${word}" | grep mp3 | sed -ne "s/.*a href=\"\([^\"]\+\).*/\1/p"`
url=`w3m -dump_source "${EEDIC_URL}${word}" | grep mp3 | sed -ne "s/.*a href=\"\([^\"]\+\).*/\1/p"`
echo $url


fi
echo -e "\n--"
echo "$dictname"
echo "A courtesy of Naver dictionary service (http://dic.naver.com/)"
done

duyoungk의 이미지

음... 저도 원인은 모르겠지만

html소스가 너무 길어서 그런건지... sed로 잘 뽑혀지지 않네요

url얻는 부분을 vi를 이용해서 해보시는건 어떤가요

w3m -dump_source "${EEDIC_URL}${word}" | grep mp3 > url
vi -c'%s/.\+a href="\([0-9a-zA-Z:\/\-\.]\+\.mp3\).*/\1/g' -c'wq!' url
url=`cat url`
echo $url

nice72의 이미지

감사합니다..성공했습니다..

거듭 감사..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.