[완료] Shell 에서 ,wgets 로 다운 받아온 파일 단어수 어떻게 세죠 ...
안녕하세요 , 셸 스크립트를 짜는데 조금 막히는 부분이 있습니다.
sh search_engine.sh hello kldp
식으로 실행하면 , (아참 여기서 hello 와 kldp 는 arguments 입니다)
같은 폴더에 있는 url.txt 파일에 들어있는 url 리스트들을 차근 차근 불러와서 ,
해당 단어들이 , 각각의 url 에 몇번씩이나 등장하는지 검색하는 쉘을 짜고 있습니다.
우선
wgets 를 이용한 웹 사이트 url 을 받아와서 , 지금 파일들로 저장을 해 두었습니다.
#!/bin/bash echo "input variables: "$# for arg in "$@" do ncount=1 #read a file part while read line do wget -q $ncount.html $line done<url.txt #read from URL done
여기까지는 했습니다.
보시면 아시겠지만 , url.txt 파일에서 url 리스트들을 받아오는데,
우선 , 저 저장하는 파일이름의 $ncount 가 안먹히네요 ...1.html , 2.html 이렇게 저장되길 기대했는데,
html 뒤에가서 번호가 붙더군요.
그리고 나서 , 저장된 각각의 url 로 부터 다운받아온 html 파일들에서 , 해당 단어를 하나하나 검색해보면서
각각의 사이트에서 몇번이나 등장 하나 보려고 합니다.
문제는 ...저장된 파일이 html 형식이라 엄청나게 복잡한데,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
위와 같이 쓸데 없는 구문들이 많이 들어있잖습니까 ?
사용자가 입력한 단어를
어떻게 정확히 콘텐츠만 골라내서 카운트 하느냐 입니다.
최종적으로는 맨 위의 실행어처럼 hello 와 kldp 가 인자로 넘어왔다면
hello in www.some......com 3회 등장
hello in www.YYYYY.ac.kr 5회 등장
kldp in www.kldp.org 10회 등장
...
..
이런식으로 만들고자 합니다.
정규식 표현을 쓰는 법도 모르겠고 ...도와주셨으면 합니다.
고맙습니다 ~
cat filename | sed -e
cat filename | sed -e 's/[^a-zA-Z]/\n/g' | grep hello | wc
우선 답변 감사드립니다
그런데 저 sed 구문은 글자 외의 것 없애는것 말고 안되지 않나요 ?
예를들어 ,
html 구문에 속해있는 단어들은 빼낼 방법이 없는것인지요
-------------------------------------------
정의의 이름으로 널 ! 용서하지 않겠다 !!
wget은 $Count=1;wget "url" -O
wget은
$Count=1;wget "url" -O "save_filepath_$Count.html" 이런식으로 하면 될거 같네요.
그리구 url 뽑아내는 정규식은 구글이나 네이버에
그리구 url 뽑아내는 정규식은 구글이나 네이버에 널려(..)있기때문에 그냥 붙여넣기 하는걸로 충분히
해결될거라고 생각합니다.;
그다음에 grep으로 url만 포함된 행을 전부 (url추출 정규식을 사용해서)뽑아낸다음에,
tr, cut 같은걸로 조금 가공하면 되겠죠.
댓글 달기