2012-07-02 4 views
0

큰 html 파일에서 정보를 추출 할 수있는 bashscript를 작성하려고합니다. 나는 매일 최신 신문을 자동으로 다운로드하기 위해 이것을 필요로한다 :). 최신 신문을 다운로드하려면 해당 ID를 알아야합니다. 그것을 얻으려면 링크를 파싱해야합니다. 내가 선을 추출하는 데 성공, 그bash를 통해 html 정보 추출

awk '/show.php\?id=/' index.html 

와 AWK와 ID를 보유하고

<a href="show.php?id=914826">Latest Newspaper</a> 

그래서 내가이 줄에서 필요로하는 것은 "914826"입니다 얻을. 이것은 내가 붙어있는 곳입니다. awk을 사용하여 전체 줄이 아닌 조각을 추출 할 수 있다고 생각하지 않습니다.

답변을 기다리십시오. 사전에 감사합니다, 사이먼

+0

당신은 XSLT를 사용할 수는 .... 같이 xml2 명령을 확인 –

+0

: http://stackoverflow.com/a/7058658/78602 – hipe

답변

1

이 완료 awk 명령이 작동해야합니다. 정규 표현식과 일치하는 행의 경우 ="으로 나뉩니다. 귀하의 예제 라인이 같은 분할 :

  • 첫 번째 필드는 다음과 같습니다 <a href=
  • 두 번째 필드 : [공백]
  • 세 번째 필드 : show.php?id
  • 네 번째 필드 : 914826
  • 그리고 다섯 번째 필드 : >Latest Newspaper</a>

이렇게 네 번째 것을 인쇄하십시오 (arr[4]) :

awk ' 
    /show.php\?id=/ { 
     split($0, arr, /[="]/); 
     print arr[4] 
    } 
' index.html 
+1

awk -F '[= "]' '/show.php\?id=/ {print $ 4}'index.html' AWK는 첫 번째 분할을 무료로 제공합니다. –

2

사용 grep :

grep -o 'id=[0-9]*' 

예 :

$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | grep -o 'id=[0-9]*' 
id=914826 

다음은 펄과 함께 할 수있는 동일하거나 나오지 :

$ echo '<a href="show.php?id=914826">Latest Newspaper</a>' | perl -pe 's/.*id=([0-9]*).*/$1/' 
914826 
+0

을 나는 그렙 방법을 사용합니다. 고맙습니다. 권장할만한 자습서가 있습니까? Java 개발자로서 bash에 대한 유용한 정보를 찾기 란 매우 어렵습니다. – battlepope

+0

@battlepope http://tldp.org/LDP/Bash-Beginners-Guide/html/ – rush

+1

@battlepope : bash에 대한 최고 : http : //tldp.org/LDP/abs/html/ –