BASH
Posts
81 posts[bash: grep] grep에서 첫번째 일치하는 문자열을 찾으면 종료하기
리눅스의 grep 명령은 기본적으로 일치하는 문자열을 모두 검색해서 찾아준다. # my_data.txt에 문자열 "abc"가 있는지 확인 grep "abc" my_data.txt 만약 모두 찾을 필요 없이 일치하는 문자열이 있는지 여부만 중요하다면, 일치하는 문자열을 하나만 찾으면 해당 파일을 더 이상 읽지 않고 종료할 수 있다. 최대 몇개까지 일치하는 경우를 찾을 것인지를 지정하는 -m 옵션을 사용하면 된다. 예를 들어 "-m 1"로 지정하면 일치하는 경우를 하나만 찾으면 종료한다. # my_data.txt에 문자열 "abc"가 있는지 확인하고, 첫번째로 일치하는 문자열을 찾으면 종료 grep -m 1 "abc" my_data.txt 크기가 큰 파일에서 특정 문자열이 몇 번 나오는
[ bash: head, tail ] 처음 n개의 행, 마지막 n개의 행, 또는 이를 제외한 나머지 출력
리눅스에서 head와 tail 명령을 이용해서 텍스트 파일의 처음 부분, 마지막 부분, 또는 처음 부분을 제외한 나머지, 마지막 부분을 제외한 나머지를 출력할 수 있다. 예시를 몇개 보면 금방 감이 잡힐 것이다. # my_file.txt의 처음 5개 행을 출력 (head) head -5 my_file.txt # my_file.txt의 마지막 5개 행을 출력 (tail) tail -5 my_file.txt 만약 my_file.txt에서 처음 5개의 행을 제외한 나머지 전체, 즉 6번째 행에서 마지막 행까지를 출력하려면 tail 명령에 -n 옵션을 사용하자. # my_file.txt의 처음 5개 행을 제외한 나머지 전체 출력 tail -n +5 my_file.txt 위의 예시에서
[bash: date] UTC(GMT) 기준 시간을 로컬(한국) 시간으로 변환
UTC (GMT) 기준으로 되어 있는 시간을 로컬(한국) 시간으로 변환하는 방법이다. date 명령에서 -d 옵션을 사용한다. 예시를 보면 금방 감이 잡힐 것이다. # UTC 기준 2021년 6월 18일 20시 24분 10초를 한국 시간으로 date -d "TZ=\"UTC\" 2021-06-18 20:24:10" Sat 19 Jun 2021 05:24:10 AM KST # 출력 형식 지정 추가 date -d "TZ=\"UTC\" 2021-06-18 20:24:10" "+%Y.%m.%d %H:%M:%S" 2021.06.19 05:24:10 -d 옵션에서 TZ="UTC"라는 내용을 지정하여 입력하는 시간이 UTC 기준이라는 점을 명시했다. TZ값을 따옴표로 묶어야 하는데, -d 옵션을 사
[bash: bc, if]실수(부동소수점) 수자의 크기 비교
리눅스 bash 스크립트의 if 조건문에서 정수(integer)의 크기 비교는 기본적으로 제공된다. x=2 y=-1 if (( $x > $y )) then echo "x의 값이 y의 값보다 큽니다." fi if [[ $x -gt $y ]] then echo "x의 값이 y의 값보다 큽니다." fi 만약 비교하고자 하는 수자가 실수(부동소수점)인 경우에는 위의 예시와 같은 비교를 할 수 없다. 이럴때는 bc와 조합을 하면 되겠다. 우선 bc와 관련한 아래의 예시를 보자. x=2.34 y=0.45 # x의 값이 y의 값보다 크면 1을 출력, 그렇지 않으면 0을 출력 echo "$x > $y" | bc # x의 값이 y의 값과 같으면 1을 출



