스크립트

포스트: 84
Tags

Posts

84 posts

[bash: nl, awk] 결과 출력에 행번호를 같이 표시하기

반달가면|2018년 2월 28일

화면에 결과를 출력할 때 행번호를 같이 표시할 필요하 있다면 nl을 이용할 수 있다. 아래의 예시를 보자. cat my_file.txt | nl 1 abc 2 def ... nl에서 아무련 옵션을 주지 않았을 경우, 6칸을 행번호 폭으로 할당하고 행번호와 출력 내용은 탭(tab)으로 구분된다. 만약 행번호의 폭을 1칸으로 하려면 -w 옵션을 사용하고, 구분자를 바꾸고 싶다면 -s 옵션을 사용하면 되겠다. # 행번호 폭 1칸, 구분자 콜론(:) cat my_file.txt | nl -w 1 -s ":" 1:abc 2:def ... 9:abc 10:def ... 출력 행수가 많아서 행번호 자리수가 -w에서 지정한 폭을 넘어갈 경우에는 당연히

[bash: sed] 문자열 대체 명령 여러개를 파일에 저장해서 활용하기

반달가면|2018년 1월 15일

sed 명령에서 여러개의 문자열을 각각 대체할 경우 -e 옵션을 활용할 수 있는데(이전 게시물을 참고하자. 여기로), 대체 명령을 파일에 저장해서 이용할 수도 있다. 우선 -e 옵션의 예시를 보자. # 문자열 abc를 123으로, def를 456으로 대체 echo "abc def xyz" | sed -e 's/abc/123/' -e 's/def/456/' 123 456 xyz 위의 작업에서 -e 옵션에 사용할 명령들을 파일에 저장해서 불러올 수 있다. 예를 들어 test.sed 파일에 이 명령들을 저장했다면 아래와 같은 형태가 된다. # test.sed 파일 내용 확인 cat test.sed s/abc/123/ s/def/456/ test.sed 파일에 있는 명령어를 적용

[bash: ((] 연관 배열(associative array)에 저장된 정수 계산

반달가면|2018년 1월 8일

간혹 실수하는 부분이 있어서 정리해 두기로. 리눅스 bash 스크립트에서의 정수 계산은 이전 게시물을 참고하자. 여기로 리눅스 bash 스크립트에서의 배열(array) 활용은 여기로, 연관 배열(associative array) 활용은 여기로. bash에서 기본적인 정수 계산은 이중 괄호를 사용한다. # 정수 계산 예시 x=3 y=5 echo $((x+y)) 8 배열(array)이라고 특별히 달라질 것은 없어 보인다. # 배열에 저장된 정수 계산 예시 a[0]=3 a[1]=5 echo $((a[0]+a[1])) 8 # 배열 인덱스에 변수 사용 a[0]=3 a[1]=5 x=0 y=1 echo $((a[x]+a[y])) 8 echo $((a[$x

[bash: while, if] 복잡한 조건에 따른 개별 작업 이후 공통된 작업이 있는 경우

반달가면|2017년 12월 21일

case 조건문을 사용하기 어려운 복잡한 여러개의 조건에 따라 뭔가 작업을 한 후에 공통된 작업이 있는 경우 어떻게 할 것인가에 대한 문제다. 하나의 변수에 대하여 여러 조건에 따라 작업을 하는 경우에는 case로 하면 되지만 변수가 다수일 경우에는 if와 elif를 계속 나열해야 하는 귀찮음이 생긴다. (case에 대한 내용은 이전 게시물을 참고하자. 여기로) 간단한 예시를 생각해 보자. 앞에서 있었던 작업에 의해 두가지 변수 a, b의 값이 설정되는데 먼저 a에 대해 우선적으로 특정 조건을 만족하는지 보고 만족하지 않을 경우 b에 대해 특정 조건을 만족하는지 봐야 하는 경우다. # 변수 a의 값이 0이거나, 또는 변수 b의 값이 1인 경우에 따라 변수 c의 값을 설정 if [[ $a -eq