awk 활용 구문 정리

IBM Power 2012. 6. 28. 14:41

+. awk 수행시 field 구분자 지정(-F, -NF)
  ex. 파일 절대경로에서 directory path 와 file name을 분리하는 스크립트 (awk -F && -NF)

   # cat path.sh
   ---------------------------------------------------------------------
#!/usr/bin/ksh
source_full_path="/home/event_action/ftp.log"

      source_file=`echo ${source_full_path} | awk -F"/" '{print$NF}'`
      source_path=`echo ${source_full_path} | awk -F'/[^/]*$' '{print $1}'`


echo "source_full_path: " ${source_full_path}
echo "source_file: " ${source_file}
echo "source_path: " ${source_path}
    ---------------------------------------------------------------------

+. awk 로 field 추출시 조건문 사용 
    ex. 5번째 field의 값이 IPv4 이거나 IPv6인 경우, 특정 컬럼 또는 전체 컬럼을 출력
      # lsof | awk '$5=="IPv4"||$5=="IPv6"{print}'
        >> awk로 field의 조건만 검사한 후 전체 데이터를 그대로 출력하려면 'print'만 지정
      # lsof | awk '$5=="IPv4"||$5=="IPv6"{$1,$2,$3,$5,$7}'
      # lsof | awk '$5!="IPv4"&&$5!="IPv6"{print}'


+. awk로 받은 값을 shell을 통해서 명령을 실행하는 경우
    (device 리스트 조회 후 파라미터 변경시에 주로 사용)
      # lsdev –Cc disk | grep –v hdisk0 | awk '{print "chdev -l" $1 "-a fc_err_recov=fast_fail" }' | sh -x




------------------------------
awk '{print substr($0, index($0,$9))}'
awk -v N=9 '{sep=""; for (i=N; i<=NF; i++) {printf("%s%s",sep,$i); sep=OFS}; printf("\n")}' 
awk -v N=9 '{for(i=1;i<N;i++){$i=""}}1'
awk '{ s = ""; for (i = 9; i <= NF; i++) s = s $i " "; print s }'


'IBM Power' 카테고리의 다른 글

env_chk.sh  (0) 2012.06.28
ftp.sh  (0) 2012.06.28
diff 와 sdiff (문자열비교)  (0) 2012.06.28
AIX & HMC에 등록된 ssh-key 삭제하기  (0) 2012.06.25
AIX -> HMC 비번없이 SSH로 로그인하기  (0) 2012.06.25
블로그 이미지

Melting

,