본문 바로가기
Programming/C++

bash shell 스크립트 정규식 url 날짜 정보 추출 url 파일 다운 받기

by AUTORI 2022. 11. 19.

1. url 주소를 / 기준으로 나누기

 

tr 명령어로 / (slash) 를 \n (개행) 문자로 변경하여 각각의 문자열을 배열처럼 사용할 수 있도록 나눈다. 

 

#!/bin/bash

URL_PARAM=${1}

echo "BEFORE : " 
${URL_PARAM}

URL_ARRAY
=$(echo  ${URL_PARAM}  |  tr "/"  "\n" )

echo  "AFTER : "  ${URL_ARRAY}

 

실행 :
./test1.sh  http://www.테스트.com/fdsafdadf/209412/12412/221211/test.zip

결과 :
BEFORE: http://www.테스트.com/fdsafdadf/209412/12412/221211/test.zip
AFTER :   http: www.테스트.com fdsafdadf 209412 12412 221211 test.zip

 


2. 나눈 문자열에서 날짜 정보 추출하기

 

echo 명령어와 grep 명령어를 조합하여 날짜 정보를 포함한 문자열을 추출한다.

 

\([0-9][0-9]\) :  00년도 ~ 99년도

\(0[1-9]\|1[0-2]\) : 01월 ~ 12월

\(0[1-9]\|[1-2][0-9]\|30\|31\)' : 01일 ~ 31일

 

grep -o 옵션을 사용하여 추출된 000_221011_00 문자열에서 날짜 정보 221011 만 추출한다.

 

#!/bin/bash

TEMP="http://www.테스트.com/000_221011_00/download/test.zip"

DATE_TEMP=`echo  ${TEMP}  |  grep -o  '\([0-9][0-9]\)\(0[1-9]\|1[0-2]\)\(0[1-9]\|[1-2][0-9]\|30\|31\)'`

echo ${DATE_TEMP}

 

실행 :
./test2.sh

결과 :
221011

 

 

3. url 파일 다운받기


wget 명령어를 사용하여 web link에 연결된 파일을 다운로드할 수 있다. 사용자 계정도 입력 가능하며 옵션을 통해 다운로드 경로를 지정해줄 수 있다.


- url 주소 : http://www.테스트.com/221010/download/test.zip
- 사용자 id : userid
- 사용자 password : userpw
- 다운로드 위치 : /temp/download/ 

 

#!/bin/bash

wget
--user
='userid' --password='userpw' 'http://www.테스트.com/221010/download/test.zip' --directory-prefix='/temp/download/'

 

실행 :
./test3.sh

결과 : 
--2022-11-16 21:03:40--  http://www.xn--9t4b11yi5a.com/221010/download/test.zip
Resolving www.xn--9t4b11yi5a.com (www.xn--9t4b11yi5a.com) ...
(생략)...

 

 

4. url에서 날짜 정보 추출 후 폴더 생성 및 파일 받는 방법

 

  1번, 2번, 3번 기능을 모두 적용해보았다.

 

 1단계 : paramater로 받은 url 정보를 /  단위로 끊어 배열 형태로 만드다.

 2단계 : 배열의 문자열에서 날짜 정보를 추출한다.

 3단계 : 날짜 정보로 현재 위치에 폴더를 생성한다.

 4단계 : 새로 만든 폴더에 url 파일을 다운로드 및 저장한다.

 

#!/bin/bash

PARAM_URL=$1
DATE=""

URL_ARRAY=$(echo  $PARAM_URL  |  tr "/"  "\n" )
echo  "URL_ARRAY:"  ${URL_ARRAY}

for  tmp  in  $URL_ARRAY

do

    DATE_TEMP=`echo  $tmp  |  grep -o  '\([0-9][0-9]\)\(0[1-9]\|1[0-2]\)\(0[1-9]\|[1-2][0-9]\|30\|31\)'`

    if [[  ${DATE_TEMP}  ]];  then

        DATE=${DATE_TEMP};

        break;

    fi

done

echo  "DATE:"  ${DATE}

mkdir ${PWD}/${DATE}

wget  --user=userid  --password='userpw!'  ${PARAM_URL}  --directory-prefix=${PWD}/${DATE}

 

실행 : 
test4.sh  http://www.테스트.com/fdsafdadf/209412/12412/221211/test.zip

결과 :
URL_ARRAY: http: www.테스트.com fdsafdadf 209412 12412 221211 test.zip
DATE:221211
--2022-11-16 17:47:03--  http://www.xn--9t4b11yi5a.com/fdsafdadf/209412/12412/221211/test.zip
Resolving www.xn--9t4b11yi5a.com (www.xn--9t4b11yi5a.com).... 
(생략)

댓글