BASH

포스트: 81
Tags

Posts

81 posts

[bash: source] 스크립트에서 환경설정 파일 활용하기

반달가면|2017년 2월 20일

셸 스크립트에서 환경설정 파일을 읽어서 변수값을 지정하고 싶을 때 source 명령을 활용할 수 있다. source 명령은 현재의 shell 프로세스에서(즉, fork하지 않고) 지정된 파일에 있는 명령을 실행한다. 아래의 예시를 보자. # test.ini 파일 내용 확인 cat test.ini MY_VALUE=10 MY_NAME="john" # test.ini 파일의 내용을 현재 shell에서 실행 source test.ini # 변수 설정 결과 확인: MY_VALUE, MY_NAME 출력 echo $MY_VALUE 10 echo $MY_NAME john 변수 MY_VALUE, MY_NAME의 값을 test.ini 파일에서 정하고, 이것을 읽어서 실행함으로써 변수값이 설

[bash: sed] 특정한 문자열이 포함된 행 삭제하기

반달가면|2017년 2월 8일

텍스트 파일에서 특정한 문자열이 포함된 행을 삭제하고 싶을 경우, sed에서 간단하게 작업이 가능하다. 삭제하고자 하는 문자열을 "/문자열/d" 형태로 지정해 주면 된다. 아래의 예시를 보자. # my_data.txt 파일에서 "abcdefg"가 포함된 행을 제거하고 화면에 출력 sed '/abcdefg/d' my_data.txt 위의 명령을 실행하면 my_data.txt 파일에서 문자열 "abcdefg"가 있는 행을 제거한 후 화면에 결과를 출력한다. 파일 자체를 수정하여 저장하고 싶다면 -i 옵션을 추가하자. (-i 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로) # my_data.txt 파일에서 "abcdefg"가 포함된 행을 삭제하고 저장 sed -i '/abcdefg/d'

[bash: awk] 일반 시간을 타임스탬프(timestamp)로 변환하기 (mktime)

반달가면|2017년 2월 3일

시간을 타임스탬프, 또는 유닉스 시간(unix time)으로 변환하고 싶을 경우 아래의 예시와 같이 date 명령으로 간편하게 바꿀 수 있다. (참고로, 유닉스 시간은 UTC 1970년 1월 1일 0시부터 몇초가 경과했는지를 나타낸다) # 2017년 1월 1일 9시 10분 25초를 유닉스 시간으로 (date) date -d "2017/1/1 09:10:25" "+%s" 1483229425 awk에서도 동일한 작업을 할 수 있다. # 2017년 1월 1일 9시 10분 25초를 유닉스 시간으로 (awk) echo "2017/1/1 09:10:25" | awk '{ date_arg=gensub("[/:]/," ","g",$0); print mktime(date_arg);}' 14832294

[bash: while, date] 특정 기간 동안의 연속된 날짜 출력하기

반달가면|2017년 1월 24일

예를 들어 2016년 10월 1일부터 2017년 2월 5일까지의 날짜를 연속으로 출력하는 방법이다. 시작 날짜와 종료 날짜의 형태를 년(4자리)월(2자리)일(2자리) 이렇게 정하면(예: 2016년 10월 1일 -> 20161001) 조건문에서 일반 수자처럼 대소 비교를 할 수 있으므로 while 반복문과 date를 조합하여 스크립트를 만들 수 있다. 아래의 예시를 보자. # 시작 날짜 2016년 10월 1일 start_date="20161001" # 종료 날짜 2017년 2월 5일 end_date="20170205" # cur_date 변수 초기값 설정(시작 날짜) cur_date="$start_date" # 종료 날짜까지 반복 while [[ $cur_date -le $end