11

[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (2)

지난 글에 이어서 이번에는 sed를 이용하여 new line을 특정 문자열로 변경하는 방법에 대해 말씀 드리도록 하겠습니다. (2) new line --> 특정 문자열 # cat test.txt1111122222333334444455555 위와 같은 컨텐츠를 가진 txt 파일이 있다고 가정합니다. 위 컨텐츠에서 Enter가 적용된 부분(new line)을 ':'(colon)으로 변경하고자 한다면 다음과 같이 수행합니다. # sed 'N;N;N;N;s/\n/:/g' test.txt sed 명령에서 'N' 옵션은 줄바꿈문자(\n)를 /A패턴/ 공간에 더하고 입력의 다음 줄을 읽어 패턴 스페이스에 덧붙이겠다는 뜻입니다. 무슨 말인지 이해가 잘 되시나요? 사실 저는 아직도 완전히 이해가 되지는 않습니다.;;;;..

[UNIX/LINUX] Shell Script - sed 명령을 이용한 new line <-> 특정 문자열 (1)

이번 글은 sed 명령어를 이용하여 new line(개행문자 \n)을 특정 문자열로 바꾸거나, 특정 문자열을 new line으로 변경하는 방법에 대한 글입니다. Shell Script를 작성하다 보면 한꺼번에 많은 내용을 바꾸어야 할 때가 종종 발생하는데, 그 때 유용하게 쓰이는 명령어가 바로 이 'sed' 명령어죠. sed와 비슷한 역할을 하는 명령어로 'tr' 이라는 명령어도 있습니다. 각자가 처한 상황에 맞게, 취향에 따라 골라 쓰시면 되는데요. 그러한 내용 변경 상황 중에서도 new line, 다시 말해 줄바꿈 상태를 특정 문자열로 변경하거나, 그 반대로 특정 문자열을 줄바꿈 상태로 바꿔야 하는 경우가 있습니다. 그럴 때 다음과 같이 사용하시면 되겠습니다. (1) 특정 문자열 --> new lin..

[UNIX/LINUX] Shell Script 기본 - 5.case문 (1) 기본 사용법 및 예제

5. case문 (1) 기본 사용법 및 예제 case 변수 in 경우1) ~ ;; 경우2) ~ ;; 경우3) ~ ;; ...esac case문의 사용법은 아주 간단합니다. shell script를 아무 생각없이 코딩하다 보면 무수히 많은 if문을 남발하게 되고 소스 자체가 지저분해 보이게 되는데 이 때 이 case문만 적절히 사용할 줄 알아도 훨씬 심플하고 보기 좋은 shell script를 작성할 수 있습니다. 그럼 바로 예제문을 통해 설명 드리겠습니다. 먼저 동일한 결과를 보여주는 if문부터 보도록 하겠습니다. tmpSize=`df -g /tmp | grep tmp | awk '{print $3}' | cut -d '.' -f 1` echo 'The size of /tmp filesystem '${t..

[UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제

4. while문 (1) 기본 사용법 및 예제 while [ 조건식 ]; do // while문 시작 ~done // while문 종료 for문과 마찬가지로 while문 또한 루프 처리를 담당합니다. 사용법이 다소 다르므로 상황에 따라 적절히 선택해서 사용해야 하는데요. 이 while문 역시 조건식 뒤에 세미콜론을 사용하지 않고 사용 가능합니다. while문의 조건식엔 보통 산술 비교 형태가 들어갑니다. 가령, 다음과 같은 식이지요. while [ ${index} -le 10 ] // index 변수값이 10보다 작거나 같은 동안 while문 수행do ~done 위와 같은 조건식으로 시작하여 '~' 로 처리한 컨텐츠 부분에 그 조건식에 위배되는 순간이 오게 되면 while문을 종료하는 식이지요. 헌데 f..

[UNIX/LINUX] Shell Script 기본 - 3.for문 (2) 예제

#!/bin/shif [ -d $1 ]; then cd $1 if [ -f $2 -a -s $2 ]; then echo $2' is file and has contents more than one character.' array=`cat $1/$2` for day in ${array}; do if [ -n ${day} ]; then if [ ${day} == "Fri" -o ${day} == "Sat" ]; then echo ${day}' is very happy day!!' else echo ${day}' is gloomy day.' fi fi done else echo $2' is not file or has zero character.' fifi 앞서 if문 예제 글에서 보여 드렸던 예제 스크립트보..

[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법

3. for문 (1) 기본 사용법 for 단일변수 in 리스트; do // for문 시작 ~done // for문 종료 for문의 용도에 대한 것을 모르시는 분은 없을 겁니다. C, Java 등 많은 language들에서 while문과 함께 가장 많이 쓰이는 루프 처리 구문이 바로 이 for문이기 때문이죠. 위 구문에서도 if문 처리에서 보았던 것처럼 세미콜론을 볼 수가 있는데, 마찬가지로 세미콜론을 사용하지 않으려면 다음과 같은 형태로 처리해야 합니다. for 단일변수 in 리스트 // for문 시작do ~done // for문 종료 '리스트' 자리에는 보통 배열 형태로 들어가게 되는데요. '리스트' 자리의 배열은 일일이 값을 나열할 수도 있고 배열 형태의 값을 가진 파일을 읽어들이는 형태일 수도 있습..

[UNIX/LINUX] Shell Script 기본 - 2.기본 문법 (3) 배열

(3) 배열 배열을 선언하여 값을 할당하는 방법에는 크게 두 가지 정도가 있습니다. 하나는 배열의 인덱스 하나하나를 구분하여 각각의 인덱스에 일일이 값을 지정하는 방법과, 또 다른 하나는 뭉탱이로 배열에 값을 넣어주는 방법입니다. 먼저 인덱스 하나하나에 값을 따로따로 지정하는 방법은 다음과 같습니다. array[0]='Shell'array[1]='Script'array[2]='Programming' 위 예제의 경우, 인덱스 '0'에는 'Shell'이란 문자열이, 인덱스 '1'에는 'Script'란 문자열이, 인덱스 '2'에는 'Programming'이란 문자열이 각각 지정되었습니다. 위와 같이 지정한 후, 다른 라인에서 해당 배열 변수값을 호출하고자 할 때는 아래와 같이 사용하면 됩니다. echo ${a..

[UNIX/LINUX] Shell Script 기본 - 1.if문 (3) 논리 연산자

(3) 논리 연산자 [ ](대괄호) 안의 조건식에 두 개 이상의 조건을 넣어야 할 경우 논리 연산자를 사용할 수 있으며, 연산자의 종류 및 기능은 다음과 같습니다. -a : and, &&-o : or, || 논리 연산자의 사용법은 다음과 같습니다. if [ 조건식1 -a 조건식2 ]; then ~else ~fi 다들 알고 계시겠지만, and 논리 연산자의 경우 '조건식1' 이 true 이어야지만 '조건식2' 로 넘어가며, '조건식1' 이 false인 경우 '조건식2' 의 체크없이 바로 else 구문으로 넘어가게 됩니다. 사용 예를 들자면, 다음과 같습니다. if [ -f ${file1} -a -f ${file2} ]; then echo 'file1과 file2는 모두 파일입니다.'else echo 'fi..

[UNIX/LINUX] Shell Script 기본 - 1.if문 (2) 테스트 연산자

(2) 테스트 연산자 [ ](대괄호) 안의 조건식에는 여러 종류의 테스트 연산자를 사용할 수 있으며, 연산자의 종류 및 기능은 다음과 같습니다. * 다음 조건을 충족시킬 경우, true 리턴 -e : 존재하는 파일 -f : 보통 파일 -d : 파일이 디렉토리 -s : 파일 크기가 0이 아님 -z : 문자열이 null임. 길이가 0 -n : 문자열이 null이 아님 -c : 파일이 문자 디바이스(키보드, 모뎀, 사운드 카드..) -b : 파일이 블럭 디바이스(플로피나 CD롬) -p : 파일이 파이프 -h : 파일이 하드 링크 -L : 파일이 심볼릭 링크 -S : 파일이 소켓 -t : 파일 디스크립터가 터미널 디바이스와 연관 있음 -r : 테스트를 돌리는 사용자가 읽기 퍼미션을 갖고 있음 -w : 테스트를 ..