Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Tables

11. Tables

11.1. 문자열 비교 연산자

(1) s1 = s2

(2) s1 != s2

(3) s1 < s2

(4) s1 > s2

(5) -n s1

(6) -z s1

지금 설명하는 내용은 문자열을 비교하는 연산자이다. 이 연산자를 문장 형대로 바꾸면 다음과 같다.

(1) s1 matches s2

(2) s1 does not match s2

(3) __TO-DO__

(4) __TO-DO__

(5) s1 is not null (contains one or more characters)

(6) s1 is null

11.2. 문자열 비교의 예제

다음은 문자열 $S1과 $S2를 비교하는 예제이다.

 
#!/bin/bash 
S1='string' 
S2='String' 
if [ $S1=$S2 ]; 
then 
echo "S1('$S1') is not equal to S2('$S2')" 
fi 
if [ $S1=$S1 ]; 
then 
echo "S1('$S1') is equal to S1('$S1')" 
fi 
보통의 프로그래밍 언어에서 사용하는 방법과 아주 비슷하다.

이 부분에 대해서는 안드레 베크의 메일을 참고하였다.

이것은 상당히 좋은 방법이다. $S1이나 $S2 둘 중 하나라도 비어 있을 때에는 에러가 발생할 것이다. x$1=x$2 이나 "$1"="$2" 와 같이 쓰는 편이 좋다.

11.3. 산술 연산자

+

-

*

/

% (remainder)

11.4. 산술 관계 연산자

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

C 언어를 사용하는 사람이라면 이것이 무슨 의미인지 한눈에 알 수 있을 것이다. 그렇지 않더라도 이 글을 읽을 정도의 사람이라면 분명 무슨 말인지 알고 있을 테니 넘어가자. ^^

11.5. 쓸모있는 명령

이 부분은 키즈가 내용을 수정하여 다시 써 주었다.

이 곳의 몇몇 명령은 대부분 프로그래밍 언어에 포함되어 있는 것이다. 물론 여기 나오는 설명은 정말 눈물나게 간단한 것이므로, 이와 같은 명령에 대한 자세한 설명은 맨 페이지를 참고하자.

sed

sed는 비대화형(non-interactive) 모드의 라인 편집기이다. 또한 필터를 사용할 수 있어 셸 프로그래밍에서 아주 잘! 사용할 수 있는 도구이다. 먼저 간단히 예제를 살펴보자.

 
$sed 's/to_be_replaced/replaced/g' /tmp/dummy 

Sed 는 /tmp/dummy 파일을 읽어들여 'to_be_replaced'라는 문자열을 'replaced'로 간단히 바꿔 버린다. 이 결과는 그냥 화면에 출력될 뿐이므로, 파일로 저장하기 위해서는 위 명령의 끝에 '> 파일이름'을 추가해야 할 것이다. 적당한 파일 이름을 넣어 주면 그 이름으로 이 결과가 저장될 것이다.

 
$sed 12, 18d /tmp/dummy 

Sed 는 원본 파일에서 12에서 18줄 까지를 제외한 모든 줄을 보여준다.

awk

awk는 C 언어와 비슷한 방식으로 작동하는, 텍스트 처리 언어이다. awk는 패턴을 검색하여 같은 것을 찾아 처리한다는 점에서는 간단한 기능을 가진 것 처럼 보이지만, 사실 아주 정교하게 동작할 수 있다.

자, 다음 행을 /tmp/dummy 파일에 집어넣자.

"test123

test

tteesstt"

 
$awk '/test/ {print}' /tmp/dummy 

test123

test

awk는 test가 포함된 줄을 화면에 출력하였다. 그러나 이것은 awk의 기능 중에서는 가장 단순한 부분에 속한다. 자세한 내용은 다른 문서를 참고하도록 하고, 여기에서는 한 가지만 더 살펴 보고 넘어가겠다.

 
$awk '/test/ {i=i+1} END {print i}' /tmp/dummy 

3

다양한 패턴을 검색하기 위해 '-f file.awk'와 같은 식으로 파일 이름을 지정하고, 이 파일 안에 필요한 패턴을 모두 입력해 사용할 수도 있다.

grep

물론 grep에 대해서는 따로 설명할 필요가 없을 지도 모르겠다. 해당되는 문자열이 있는 행을 반환하는 grep 명령은 널리 쓰이고 있으니까. 하지만 grep은 다른 다양한 기능도 발휘할 수 있다.

 
$grep "look for this" /var/log/messages -c 

12

"look for this"라는 문장이 /var/log/messages라는 파일 안에서 12번 발견되었다는 뜻이다.

wc

이 명령은 단어 수를 세어 주는 명령이다. 어느 외국 추리 소설에서, 단어당 5센트를 받는 작가의 이야기가 나오기도 했는데, 정말 원고료를 책정할 때 사용할 지도 모르겠다. 다음과 같은 내용을 dummy 파일로 저장하고 명령을 실행해 보자. "bash introduction howto test file"

 
$wc --words --lines --bytes /tmp/dummy 

2 5 34 /tmp/dummy

sort

그러면 다음과 같은 내용이 들어 있는 임시 파일 /tmp/dummy를 만들어 보자.

"b

c

a"

 
$sort /tmp/dummy 

위 명령의 결과로 다음과 같은 출력을 볼 수 있을 것이다.

a

b

c

또한 쉽지만은 않은 녀석으로 bc도 있다.

Bc는 명령 행에서 사용하는 계산기이다. 파일이나 직접 입력 혹은 리디렉션으로 입력받아 처리한다. -q 옵션을 사용하면 처음 시작할 때 나오는 메시지를 안 보고 넘어갈 수 있다.

 
$bc -q 

1 == 5

0

0.05 == 0.05

1

5 != 5

0

2 ^ 8

256

sqrt(9)

3

while (i != 9) {

i = i + 1;

print i

}

123456789

quit

tput (initialize a terminal or query terminfo database)