2009. 5. 21.

[Shell] 구구단 및 별 출력 스크립트

[1] 구구단 출력

#!/bin/bash
dan=2
while [ $dan -lt 10 ]
do
echo " $dan 단"
echo "======"
num=1
while [ $num -lt 10 ]
do
answer=`expr $dan \* $num`
if [ $answer -lt 10 ]; then
answer=" $answer"
fi
echo "${dan}x${num}=${answer}"
num=`expr $num + 1`
done

dan=`expr $dan + 1`
echo ""
done

출력 :
2 단
======
2x1= 2
2x2= 4
2x3= 6
2x4= 8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18

.....

9 단
======
9x1= 9
9x2=18
9x3=27
9x4=36
9x5=45
9x6=54
9x7=63
9x8=72
9x9=81


[2] 구구단 출력 가로
#!/bin/bash
echo ""
num=1
while [ $num -lt 10 ]
do
dan=2
while [ $dan -lt 6 ]
do
answer=`expr $dan \* $num`
if [ $answer -lt 10 ]; then
answer=" $answer"
fi
echo -n "${dan}x${num}=${answer} "
dan=`expr $dan + 1`
done

num=`expr $num + 1`
echo ""
done

echo ""

num=1
while [ $num -lt 10 ]
do
dan=6
while [ $dan -lt 10 ]
do
answer=`expr $dan \* $num`
if [ $answer -lt 10 ]; then
answer=" $answer"
fi
echo -n "${dan}x${num}=${answer} "
dan=`expr $dan + 1`
done

num=`expr $num + 1`
echo ""
done
echo ""

출력 :

2x1= 2 3x1= 3 4x1= 4 5x1= 5
2x2= 4 3x2= 6 4x2= 8 5x2=10
2x3= 6 3x3= 9 4x3=12 5x3=15
2x4= 8 3x4=12 4x4=16 5x4=20
2x5=10 3x5=15 4x5=20 5x5=25
2x6=12 3x6=18 4x6=24 5x6=30
2x7=14 3x7=21 4x7=28 5x7=35
2x8=16 3x8=24 4x8=32 5x8=40
2x9=18 3x9=27 4x9=36 5x9=45

6x1= 6 7x1= 7 8x1= 8 9x1= 9
6x2=12 7x2=14 8x2=16 9x2=18
6x3=18 7x3=21 8x3=24 9x3=27
6x4=24 7x4=28 8x4=32 9x4=36
6x5=30 7x5=35 8x5=40 9x5=45
6x6=36 7x6=42 8x6=48 9x6=54
6x7=42 7x7=49 8x7=56 9x7=63
6x8=48 7x8=56 8x8=64 9x8=72
6x9=54 7x9=63 8x9=72 9x9=81




[3] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
while [ $j -le $i ]
do
echo -n "*"
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done
echo ""
출력 :
Number : 10

*
**
***
****
*****
******
*******
********
*********
**********

[4] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su - $i`
while [ $j -le $su ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

*
**
***
****
*****
******
*******
********
*********
**********

[5] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su - $i`
l=`expr $su + $i - 1`
while [ $j -le $l ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

*
***
*****
*******
*********
***********
*************
***************
*****************
*******************

[6] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su - $i + 1`
while [ $j -le $k ]
do
echo -n "*"
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

**********
*********
********
*******
******
*****
****
***
**
*

[7] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
while [ $j -le $su ]
do
if [ $j -lt $i ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

**********
*********
********
*******
******
*****
****
***
**
*

[8] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su \* 2 - $i`
while [ $j -le $k ]
do
if [ $j -lt $i ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`

done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

*******************
*****************
***************
*************
***********
*********
*******
*****
***
*

[9] 별 출력
#!/bin/bash
echo ""
echo -n "Number : "
read su
echo ""

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su - $i`
l=`expr $su - 1 + $i`
while [ $j -le $l ]
do
if [ $j -le $k ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`
done

i=`expr $i + 1`
echo ""
done

i=1
while [ $i -le $su ]
do
j=1
k=`expr $su \* 2 - $i - 1`
while [ $j -le $k ]
do
if [ $j -le $i ]
then
echo -n " "
else
echo -n "*"
fi
j=`expr $j + 1`

done

i=`expr $i + 1`
echo ""
done
echo ""

출력 :
Number : 10

*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*****************
***************
*************
***********
*********
*******
*****
***
*

2009. 5. 20.

grep, egrep, fgrep

grep, egrep, fgrep

grep(egrep, fgrep) [option] “pattern” filename



-i : 대소문자 구별을 하지 않는다.
-v : pattern 을 포함하지 않는 행만 출력한다.
-n : 행번호를 출력한다.
-l : 파일명만 출력한다.
-c : 패턴과 일치하는 라인의 갯수만 보여준다.



grep : 강력한 패턴 매칭 템플릿을 정의하기 위해 "정규 표현식"을 사용할 수 있다.
egrep [옵션] "패턴|패턴|..." [대상파일들] : 확장된 정규 표현식을 사용하며, 찾아낼 패턴을 여러개 지정할 수 있다. '|'기호는 불린 연산자 "OR"에 해당하므로, 정해진 패턴들에 포함되는 모든 라인을 보여준다.

fgrep [옵션] 패턴 [대상파일들] : 패턴과 정확히 일치하는 것만을 찾아 준다.



많은 시스템 관리 명령들과 파이프(pipe)를 이용해서 사용할 수 있다. 흔히 사용하는 것은 프로세스 확인이다.
$ ps aux | grep httpd
위와 같이 현재 시스템의 프로세스중 httpd 만 검색해 낸다.
만일 pipe 를 이용하여 검색할경우 검색 패턴이 한개 이상일 경우엔 egrep을 이용하여 검색할수 있다.

$ ps aux | egrep 'httpd|mysql'


$ grep -v "^[ ^I]*$" 파일명 //공백을 제거한 파일 내용 살펴보기
$ grep -v "^#*$" 파일명 //주석을 제거한 파일 내용 살펴보기

만일 현재 디렉토리와 그 하위 디렉토리까지 grep 패턴 검색을 하고자 할땐 find 명령을 이용하면 된다.
$ find . -exec grep "pattern" {} \;