BASH

포스트: 81
Tags

Posts

81 posts

[bash: grep] grep에서 첫번째 일치하는 문자열을 찾으면 종료하기

반달가면|2022년 6월 22일

리눅스의 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개의 행, 또는 이를 제외한 나머지 출력

반달가면|2021년 7월 26일

리눅스에서 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) 기준 시간을 로컬(한국) 시간으로 변환

반달가면|2021년 6월 28일

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]실수(부동소수점) 수자의 크기 비교

반달가면|2021년 4월 19일

리눅스 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을 출