"Bash"의 두 판 사이의 차이

오픈소스 비즈니스 컨설팅
둘러보기로 가기 검색하러 가기
잔글
잔글
144번째 줄: 144번째 줄:
 
  </span></font>
 
  </span></font>
  
==유용한 Tip==
+
== 운영자 가이드 ==
===allowDBConnection===
+
 
 +
 
 +
 
 +
== 유용한 Tip ==
 +
 
 +
=== allowDBConnection ===
 +
 
 
  #!/bin/bash
 
  #!/bin/bash
 
  ### ================================================================================================
 
  ### ================================================================================================
  ###    프로그램 명     : allowDBConnection, Version 1.0
+
  ###    프로그램 명   &nbsp;: allowDBConnection, Version 1.0
  ###    프로그램 설명   : 특정 host에서 Database로의 접속을 허용 합니다.
+
  ###    프로그램 설명 &nbsp;: 특정 host에서 Database로의 접속을 허용 합니다.
  ###    작성자         : 김계현 (pnuskgh@gmail.com, 010-5034-3931)
+
  ###    작성자         &nbsp;: 김계현 (pnuskgh@gmail.com, 010-5034-3931)
  ###    작성일         : 2002.09.27 ~ 2002.09.27
+
  ###    작성일         &nbsp;: 2002.09.27 ~ 2002.09.27
 
  ### ----[History 관리]------------------------------------------------------------------------------
 
  ### ----[History 관리]------------------------------------------------------------------------------
  ###    수정자         :
+
  ###    수정자         &nbsp;:
  ###    수정일         :
+
  ###    수정일         &nbsp;:
  ###    수정 내용       :
+
  ###    수정 내용     &nbsp;:
 
  ### ================================================================================================
 
  ### ================================================================================================
 
   
 
   
 
  ###---  Command Line에서 입력된 인수를 검사한다.
 
  ###---  Command Line에서 입력된 인수를 검사한다.
  if [[ $# = 4 ]]; then
+
  if [[$# = 4| $# = 4 ]]; then
  HOST=$1
+
  HOST=$1
  DATABASE=$2
+
  DATABASE=$2
  USER=$3
+
  USER=$3
  PASSWORD=$4
+
  PASSWORD=$4
  elif [[ $# = 5 ]]; then
+
  elif [[$# = 5| $# = 5 ]]; then
  HOST=$1
+
  HOST=$1
  DATABASE=$2
+
  DATABASE=$2
  USER=$3
+
  USER=$3
  PASSWORD=$4
+
  PASSWORD=$4
 
  else
 
  else
  /bin/echo "Using : allowDBConnection HOST DATABASE USER PASSWORD [ROOTPASSWORD]"
+
  /bin/echo "Using&nbsp;: allowDBConnection HOST DATABASE USER PASSWORD [ROOTPASSWORD]"
  /bin/echo "        HOST           : 접속하려는 client의 host"
+
  /bin/echo "        HOST         &nbsp;: 접속하려는 client의 host"
  /bin/echo "        DATABASE       : 접속을 허용하려는 Database"
+
  /bin/echo "        DATABASE     &nbsp;: 접속을 허용하려는 Database"
  /bin/echo "        USER           : Database 사용자"
+
  /bin/echo "        USER         &nbsp;: Database 사용자"
  /bin/echo "        PASSWORD       : Database 사용자의 암호"
+
  /bin/echo "        PASSWORD     &nbsp;: Database 사용자의 암호"
  /bin/echo "        ROOTPASSWORD   : Database의 root 사용자의 암호"
+
  /bin/echo "        ROOTPASSWORD &nbsp;: Database의 root 사용자의 암호"
  /bin/echo " "
+
  /bin/echo " "
  exit
+
  exit
 
  fi
 
  fi
 
   
 
   
 
  ###---  특정 host에서 Database로의 접속을 허용 합니다.
 
  ###---  특정 host에서 Database로의 접속을 허용 합니다.
  if [[ $# = 4 ]]; then
+
  if [[$# = 4| $# = 4 ]]; then
 
   
 
   
 
  /usr/bin/mysql -uroot -p <<+
 
  /usr/bin/mysql -uroot -p <<+
 
  connect mysql;
 
  connect mysql;
 
  insert into db
 
  insert into db
        values ('${HOST}', '${DATABASE}', '${USER}',
+
      values ('${HOST}', '${DATABASE}', '${USER}',
            'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+
          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
            'Y','Y','Y','Y','Y','Y','Y','Y','Y');
+
          'Y','Y','Y','Y','Y','Y','Y','Y','Y');
 
  commit;
 
  commit;
 
  flush privileges;
 
  flush privileges;
199번째 줄: 205번째 줄:
 
  /usr/bin/mysql --user=root --password=${ROOTPASSWORD} mysql <<+
 
  /usr/bin/mysql --user=root --password=${ROOTPASSWORD} mysql <<+
 
  insert into db
 
  insert into db
        values ('${HOST}', '${DATABASE}', '${USER}',
+
      values ('${HOST}', '${DATABASE}', '${USER}',
            'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
+
          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
            'Y','Y','Y','Y','Y','Y','Y','Y','Y');
+
          'Y','Y','Y','Y','Y','Y','Y','Y','Y');
 
  commit;
 
  commit;
 
  flush privileges;
 
  flush privileges;
210번째 줄: 216번째 줄:
 
  fi
 
  fi
  
===backupInstance===
+
=== backupInstance ===
 +
 
 
  #!/bin/bash
 
  #!/bin/bash
 
  ### ================================================================================================
 
  ### ================================================================================================
  ###    프로그램 명     : backupInstance, Version 1.0
+
  ###    프로그램 명   &nbsp;: backupInstance, Version 1.0
  ###    프로그램 설명   : Sugar Instance와 Database를 백업 합니다.
+
  ###    프로그램 설명 &nbsp;: Sugar Instance와 Database를 백업 합니다.
  ###    작성자         : 김계현 (pnuskgh@gmail.com, 010-5034-3931)
+
  ###    작성자         &nbsp;: 김계현 (pnuskgh@gmail.com, 010-5034-3931)
  ###    작성일         : 2002.07.15 ~ 2002.09.27
+
  ###    작성일         &nbsp;: 2002.07.15 ~ 2002.09.27
 
  ### ----[History 관리]------------------------------------------------------------------------------
 
  ### ----[History 관리]------------------------------------------------------------------------------
  ###    수정자         :
+
  ###    수정자         &nbsp;:
  ###    수정일         :
+
  ###    수정일         &nbsp;:
  ###    수정 내용       :
+
  ###    수정 내용     &nbsp;:
 
  ### ================================================================================================
 
  ### ================================================================================================
 
   
 
   
228번째 줄: 235번째 줄:
 
   
 
   
 
  ###---  Command Line에서 입력된 인수를 검사한다.
 
  ###---  Command Line에서 입력된 인수를 검사한다.
  if [[ $# = 4 ]]; then
+
  if [[$# = 4| $# = 4 ]]; then
  INSTANCE=$1
+
  INSTANCE=$1
  DATABASE=$2
+
  DATABASE=$2
  USER=$3
+
  USER=$3
  PASSWORD=$4
+
  PASSWORD=$4
 
  else
 
  else
  /bin/echo "Using : backupInstance INSTANCE DATABASE USER PASSWORD"
+
  /bin/echo "Using&nbsp;: backupInstance INSTANCE DATABASE USER PASSWORD"
  /bin/echo "        INSTANCE       : Sugar Instance"
+
  /bin/echo "        INSTANCE     &nbsp;: Sugar Instance"
  /bin/echo "        DATABASE       : Database"
+
  /bin/echo "        DATABASE     &nbsp;: Database"
  /bin/echo "        USER           : Database 사용자"
+
  /bin/echo "        USER         &nbsp;: Database 사용자"
  /bin/echo "        PASSWORD       : Database 사용자의 암호"
+
  /bin/echo "        PASSWORD     &nbsp;: Database 사용자의 암호"
  /bin/echo " "
+
  /bin/echo " "
  exit
+
  exit
 
  fi
 
  fi
 
   
 
   
252번째 줄: 259번째 줄:
 
  clear
 
  clear
 
  /bin/echo "--------------------------------------------------"
 
  /bin/echo "--------------------------------------------------"
  /bin/echo "Backup folder : " ${BACKUP_DIR}
+
  /bin/echo "Backup folder&nbsp;: " ${BACKUP_DIR}
  /bin/echo "Backup datetime : " `date +%Y%m%d_%H%M%S`
+
  /bin/echo "Backup datetime&nbsp;: " `date +%Y%m%d_%H%M%S`
 
  /bin/echo " "  
 
  /bin/echo " "  
 
   
 
   
 
  /bin/ls -alF ${BACKUP_DIR}
 
  /bin/ls -alF ${BACKUP_DIR}
  
===Watchdog Tomcat===
+
=== Watchdog Tomcat ===
 +
 
 
*Apache Tomcat을 모니터링하고 있다가 죽었을 경우 살려주는 Script
 
*Apache Tomcat을 모니터링하고 있다가 죽었을 경우 살려주는 Script
 +
 
:*watchdogTomcat.csh
 
:*watchdogTomcat.csh
 +
 
  #!/bin/csh
 
  #!/bin/csh
 
  ###---  Default 환경변수를 설정한다.
 
  ###---  Default 환경변수를 설정한다.
282번째 줄: 292번째 줄:
 
  ###---      Process가 죽었을 경우 다시 살린다.
 
  ###---      Process가 죽었을 경우 다시 살린다.
 
  if ("${procPID}" == "") then
 
  if ("${procPID}" == "") then
    ${PROC_STOP}    >& /dev/null
+
    ${PROC_STOP}    >& /dev/null
    ${PROC_START}  >& /dev/null
+
    ${PROC_START}  >& /dev/null
    \/bin/echo  "----------------------------------------"  >> ${JOB_LOG}
+
    \/bin/echo  "----------------------------------------"  >> ${JOB_LOG}
    \/bin/echo  "---    ${PROC_NAME} 재기동"                >> ${JOB_LOG}
+
    \/bin/echo  "---    ${PROC_NAME} 재기동"                >> ${JOB_LOG}
    \/bin/date                                              >> ${JOB_LOG}
+
    \/bin/date                                              >> ${JOB_LOG}
    \/bin/echo  " "                                        >> ${JOB_LOG}
+
    \/bin/echo  " "                                        >> ${JOB_LOG}
 
  endif
 
  endif
 
   
 
   
298번째 줄: 308번째 줄:
 
  ###---  환경변수를 설정한다.
 
  ###---  환경변수를 설정한다.
 
  set    PROC_NAME="Apache Tomcat 서버"                      ### Process 명
 
  set    PROC_NAME="Apache Tomcat 서버"                      ### Process 명
                                                            ### Process를 확인할 수 있는 문자열
+
                                                            ### Process를 확인할 수 있는 문자열
 
  set    PROC_STR="Dcatalina.home=/usr/local/tomcat6"
 
  set    PROC_STR="Dcatalina.home=/usr/local/tomcat6"
                                                            ### Process Stop 명령어
+
                                                            ### Process Stop 명령어
 
  set    PROC_STOP="service tomcat6 stop"
 
  set    PROC_STOP="service tomcat6 stop"
                                                            ### Process Start 명령어
+
                                                            ### Process Start 명령어
 
  set    PROC_START="service tomcat6 start"
 
  set    PROC_START="service tomcat6 start"
 
  set    JOB_LOG="/root/logs/watchdog.log"                  ### 현재 프로그램이 처리한 Log 파일
 
  set    JOB_LOG="/root/logs/watchdog.log"                  ### 현재 프로그램이 처리한 Log 파일
312번째 줄: 322번째 줄:
 
   
 
   
 
  switch ("$argv[1]")
 
  switch ("$argv[1]")
    case    "-check":
+
    case    "-check":
        set    flagCheck="true"
+
        set    flagCheck="true"
        shift
+
        shift
        breaksw
+
        breaksw
    case    "-help":
+
    case    "-help":
        goto    theUsing
+
        goto    theUsing
    case    "-time":
+
    case    "-time":
        shift
+
        shift
        if ($#argv < 1)  goto    theUsing
+
        if ($#argv < 1)  goto    theUsing
        set    timeSecond="$argv[1]"
+
        set    timeSecond="$argv[1]"
        shift
+
        shift
        breaksw
+
        breaksw
    default:
+
    default:
        goto    theUsing
+
        goto    theUsing
        breaksw
+
        breaksw
 
  endsw
 
  endsw
 
   
 
   
332번째 줄: 342번째 줄:
 
   
 
   
 
  theUsing:
 
  theUsing:
  \/bin/echo  "Using : watchdogTomcat.csh [-help] [-time sec] [-check]"
+
  \/bin/echo  "Using&nbsp;: watchdogTomcat.csh [-help] [-time sec] [-check]"
  \/bin/echo  "          -help       : 프로그램에 대한 사용법을 보여준다."
+
  \/bin/echo  "          -help     &nbsp;: 프로그램에 대한 사용법을 보여준다."
  \/bin/echo  "          -time sec   : 초 단위로 Process를 검사할 간격을 설정한다. (default. 60)"
+
  \/bin/echo  "          -time sec &nbsp;: 초 단위로 Process를 검사할 간격을 설정한다. (default. 60)"
  \/bin/echo  "          -check     : 한번만 검사를 한다. (crontab에서 사용할 경우를 위해)"
+
  \/bin/echo  "          -check     &nbsp;: 한번만 검사를 한다. (crontab에서 사용할 경우를 위해)"
 
  \/bin/echo  " "
 
  \/bin/echo  " "
 
  exit
 
  exit
  
===파일 목록 추가===
+
=== 파일 목록 추가 ===
 +
 
 
  CLASSPATHA=/nas/appl/flume/lib
 
  CLASSPATHA=/nas/appl/flume/lib
 
  for file in /nas/appl/flume/lib/*.jar
 
  for file in /nas/appl/flume/lib/*.jar
 
  do
 
  do
  CLASSPATHA=${CLASSPATHA}:${file}
+
  CLASSPATHA=${CLASSPATHA}:${file}
 
  done
 
  done
  
===Disk 용량 확인===
+
=== Disk 용량 확인 ===
 +
 
 
*폴더별 사용 용량 확인
 
*폴더별 사용 용량 확인
 +
 
  du -s -m *
 
  du -s -m *
  

2016년 3월 24일 (목) 16:15 판

Linux에서 많이 사용하는 Shell Script인 bash(Bourne Again Shell)를 정리 한다.

사용자 가이드

Bash 실행 순서

  • 첫 로그인 시
/etc/profile
~/.bash_profile, ~/.bash_login, ~/.profile
  • Shell 실행시 마다
~/.bashrc
  • .bashrc 샘플
alias showinfo='~/bin/showinfo.bash'
alias dir='/bin/ls -alF'
alias dird='/bin/ls -alF | grep /'

Bash 인수

  • $# : 인수의 갯수
  • $1, $2, $3, ...
  • shift
for thing in "$@"; do
    echo $thing
done
  • bash -c 실행할_문자열
  • ~ 2> /dev/null : 표준 에러를 표시하지 않음
  • ~ 1>&2 /dev/null : 표준 출력과 표준 에러를 표시하지 않음
  • ${변수=값} : 변수에 값 지정
  • ${HADOOP_HOME:-${HADOOP_PREFIX}} : ${HADOOP_HOME}에 값이 없을 경우 ${HADOOP_PREFIX} 값을 사용

표준 입출력

표준 입력 (/dev/stdin)

  • <
  • <<+
    Here document.
    +

표준 출력 (/dev/stdout)

  • >
  • 1>
  • > /dev/null 2>&1

표준 오류 (/dev/stderr)

  • 2> /dev/null
  • 2> /dev/null 1>&2

변수 편집

Replace

${변수명/aaa/bbb} : 첫 aaa를 bbb로 변경

${변수명//aaa/bbb} : 모든 aaa를 bbb로 변경


참고 문헌

기타 정리

#!/bin/bash
STR_DATE=`date +%Y%m%d_%H%M%S`
${STR_DATE}

funcShowinfo()
{
 ~/bin/showinfo_$1.bash
 echo '.'
}
funcShowinfo "test"


  • 연월일 표시
#--- CentOS에서
date +%Y%m%d_%H%M%S
  • kill `ps -C ~ -o pid=`
  • Script Arguments : $1
test ~ = ~
[ ~ = ~ ]
echo $?
if  $# < 5; then

if [ "$1" = "centos" ]; then
echo 'rarara'
fi

if ~; then
~
elif ~ ; then
~
else
~
fi
while ~
do
~
done
until ~
do
~
done
case string in
"~") ~
 ;;
esac
for hostname in "controller001" "controller002" "controller003"; do
    echo ${hostname}
done

for ~ in [list]
do
~
done
for ~
do
~
done
select ~ in [~]
do
~
done



운영자 가이드

유용한 Tip

allowDBConnection

#!/bin/bash
### ================================================================================================
###     프로그램 명     : allowDBConnection, Version 1.0
###     프로그램 설명   : 특정 host에서 Database로의 접속을 허용 합니다.
###     작성자          : 김계현 (pnuskgh@gmail.com, 010-5034-3931)
###     작성일          : 2002.09.27 ~ 2002.09.27
### ----[History 관리]------------------------------------------------------------------------------
###     수정자          :
###     수정일          :
###     수정 내용       :
### ================================================================================================

###---  Command Line에서 입력된 인수를 검사한다.
if  $# = 4 ; then
 HOST=$1
 DATABASE=$2
 USER=$3
 PASSWORD=$4
elif  $# = 5 ; then
 HOST=$1
 DATABASE=$2
 USER=$3
 PASSWORD=$4
else
 /bin/echo "Using : allowDBConnection HOST DATABASE USER PASSWORD [ROOTPASSWORD]"
 /bin/echo "        HOST           : 접속하려는 client의 host"
 /bin/echo "        DATABASE       : 접속을 허용하려는 Database"
 /bin/echo "        USER           : Database 사용자"
 /bin/echo "        PASSWORD       : Database 사용자의 암호"
 /bin/echo "        ROOTPASSWORD   : Database의 root 사용자의 암호"
 /bin/echo " "
 exit
fi

###---  특정 host에서 Database로의 접속을 허용 합니다.
if  $# = 4 ; then

/usr/bin/mysql -uroot -p <<+
connect mysql;
insert into db
      values ('${HOST}', '${DATABASE}', '${USER}',
          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
          'Y','Y','Y','Y','Y','Y','Y','Y','Y');
commit;
flush privileges;
grant all privileges on ${DATABASE}.* to ${USER}@${HOST} identified by '${PASSWORD}';
exit
+

else

/usr/bin/mysql --user=root --password=${ROOTPASSWORD} mysql <<+
insert into db
      values ('${HOST}', '${DATABASE}', '${USER}',
          'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
          'Y','Y','Y','Y','Y','Y','Y','Y','Y');
commit;
flush privileges;
grant all privileges on ${DATABASE}.* to ${USER}@${HOST} identified by '${PASSWORD}';
exit
+

fi

backupInstance

#!/bin/bash
### ================================================================================================
###     프로그램 명     : backupInstance, Version 1.0
###     프로그램 설명   : Sugar Instance와 Database를 백업 합니다.
###     작성자          : 김계현 (pnuskgh@gmail.com, 010-5034-3931)
###     작성일          : 2002.07.15 ~ 2002.09.27
### ----[History 관리]------------------------------------------------------------------------------
###     수정자          :
###     수정일          :
###     수정 내용       :
### ================================================================================================

###---  Default 환경변수를 설정한다.
WEB_ROOT=/var/www/html
BACKUP_DIR=/data/backup

###---  Command Line에서 입력된 인수를 검사한다.
if  $# = 4 ; then
 INSTANCE=$1
 DATABASE=$2
 USER=$3
 PASSWORD=$4
else
 /bin/echo "Using : backupInstance INSTANCE DATABASE USER PASSWORD"
 /bin/echo "        INSTANCE       : Sugar Instance"
 /bin/echo "        DATABASE       : Database"
 /bin/echo "        USER           : Database 사용자"
 /bin/echo "        PASSWORD       : Database 사용자의 암호"
 /bin/echo " "
 exit
fi

###---  Sugar Instance를 백업 합니다.
cd ${WEB_ROOT}
/bin/tar cvf ${BACKUP_DIR}/${INSTANCE}_`date +%Y%m%d_%H%M%S`.tar ${INSTANCE}

/usr/bin/mysqldump --user=${USER} --password=${PASSWORD} ${DATABASE} > ${BACKUP_DIR}/${DATABASE}_DB_`date +%Y%m%d_%H%M%S`.sql
/bin/tar cvf ${BACKUP_DIR}/${DATABASE}_DB_`date +%Y%m%d_%H%M%S`.tar /var/lib/mysql/${DATABASE}

clear
/bin/echo "--------------------------------------------------"
/bin/echo "Backup folder : " ${BACKUP_DIR}
/bin/echo "Backup datetime : " `date +%Y%m%d_%H%M%S`
/bin/echo " " 

/bin/ls -alF ${BACKUP_DIR}

Watchdog Tomcat

  • Apache Tomcat을 모니터링하고 있다가 죽었을 경우 살려주는 Script
  • watchdogTomcat.csh
#!/bin/csh
###---  Default 환경변수를 설정한다.
goto    theSet
theSetEnd:

###---  인수의 초기값을 설정한다.
set     timeSecond="60"                                     ### Process를 검사할 간격
set     flagCheck="false"                                   ### true일 경우 한번만 검사를 한다.

###---      Command Line에서 입력된 인수를 검사한다.
goto    theArg
theArgEnd:

###---  Process를 검사한다.
theStart: 

###---      Process를 확인한다.
set     procPID=`/bin/ps -ef | /bin/grep -v /bin/grep | /bin/grep "${PROC_STR}" | /bin/awk '{print $2}'`

###---      Process가 죽었을 경우 다시 살린다.
if ("${procPID}" == "") then
   ${PROC_STOP}    >& /dev/null
   ${PROC_START}   >& /dev/null
   \/bin/echo  "----------------------------------------"  >> ${JOB_LOG}
   \/bin/echo  "---    ${PROC_NAME} 재기동"                >> ${JOB_LOG}
   \/bin/date                                              >> ${JOB_LOG}
   \/bin/echo  " "                                         >> ${JOB_LOG}
endif

###---      "-check" 인수가 있을 경우 처리를 종료하고, 없을 경우 timeSecond만큼 sleep한후 다시 검사한다.
if ("${flagCheck}" == "true")   exit
/bin/sleep   ${timeSecond}
goto theStart

theSet:
###---  환경변수를 설정한다.
set     PROC_NAME="Apache Tomcat 서버"                      ### Process 명
                                                           ### Process를 확인할 수 있는 문자열
set     PROC_STR="Dcatalina.home=/usr/local/tomcat6"
                                                           ### Process Stop 명령어
set     PROC_STOP="service tomcat6 stop"
                                                           ### Process Start 명령어
set     PROC_START="service tomcat6 start"
set     JOB_LOG="/root/logs/watchdog.log"                   ### 현재 프로그램이 처리한 Log 파일

goto    theSetEnd

theArg:
if ($#argv < 1)   goto    theArgEnd

switch ("$argv[1]")
   case    "-check":
       set     flagCheck="true"
       shift
       breaksw
   case    "-help":
       goto    theUsing
   case    "-time":
       shift
       if ($#argv < 1)   goto    theUsing
       set     timeSecond="$argv[1]"
       shift
       breaksw
   default:
       goto    theUsing
       breaksw
endsw

goto    theArg

theUsing:
\/bin/echo   "Using : watchdogTomcat.csh [-help] [-time sec] [-check]"
\/bin/echo   "           -help       : 프로그램에 대한 사용법을 보여준다."
\/bin/echo   "           -time sec   : 초 단위로 Process를 검사할 간격을 설정한다. (default. 60)"
\/bin/echo   "           -check      : 한번만 검사를 한다. (crontab에서 사용할 경우를 위해)"
\/bin/echo   " "
exit

파일 목록 추가

CLASSPATHA=/nas/appl/flume/lib
for file in /nas/appl/flume/lib/*.jar
do
 CLASSPATHA=${CLASSPATHA}:${file}
done

Disk 용량 확인

  • 폴더별 사용 용량 확인
du -s -m *

awk

  • 명령행
awk  'pattern  {action}' file
awk  -f  awkfile  file
  • Pattern
BEGIN                  //--- 시작전 실행
END                    //--- 종료후 실행
/정규식/               //--- 정규식을 만족하면 실행
expression             //--- 참일 경우 실행 (not zero, not null), &&(and), ||(or) !(not)
pattern1, pattern2     //--- pattern1과 pattern2 사이의 라인에서 실행
  • Action
print $1, $2
printf(format, ...)
if (~) ~ else ~
    var ~pattern  : var 변수가 pattern에 일치하면 참
    var !~pattern : var 변수가 pattern에 일치하지 않으면 참
while (~) ~
for (~;~;~) ~
for (~ in ~) ~
do ~ while (~)
break, continue
next
exit
exit expression
  • Variables
FILENAME     //--- 파일 이름
FS           //--- 입력 필드 분리자
NR           //--- 현재 행번호
NF           //--- 현재 행의 필드 갯수
OFS          //--- 출력되는 필드의 분리자
  • 내장 함수
length(x)     //--- 문자의 길이
int(x)        //--- x의 정수값
substr(str, start, len)   //--- str 문자열에서 start부터 len개의 문자 반환
sub(from, to, str)        //--- str 문자열에서 첫번째 from을 to로 치환
gsub(from, to, str)       //--- str 문자열에서 모든 from을 to로 치환
split(str, array, sep)    //--- str 문자열을 sep 문자열로 구분하여 쪼개어 array에 저장 (array[1])
toupper(str)
tolower(str)
system(command)           //--- 명령을 실행하고 exit 상태를 반환
  • 참고 문헌

참고 문헌

  • 모니터링