'분류 전체보기'에 해당되는 글 219건

외로워도 슬퍼도 나는 안 울어~~~
눈가에 눈물이 젖어 있지만, 울진 않았다.
이렇게 산다는게 정답이 아니라는 건 알지만,
현실이 이렇게 만드는 거 같다.
아니, "내가 현실을 이길 용기가 없는 것은 아닐까?" 라는 생각이 든다.

난 이런 현실을 아내가 잘 참아주고, 잘 이해해 줄 거라는 생각을 늘상 해왔다.
이번 내동생 결혼식을 앞두고,
집에선 결혼 자금이 모잘라 시형이 옷 한 벌 해 줄 돈조차 아쉬운 형편이다.
그런 와중에 어머니는 시형이 옷 한 벌 해 입히라며 아내에게
돈을 주겠다고 했는데, 아내는 한사코 사양 했다고 어머니로부터 들었다.
그래도, 어머니는 미안해서 나중에 결혼식날 축의금을 받은 뒤
주시겠다고 나한테 말씀하셨다.
아무래도 지금은 한 푼이라도 아쉬운 탓이려니 생각이 든다.

난 보기 보다 속 깊은 아내에게 고맙다는 말을 전하고 싶었다.
그러나, 아니었다.
그게 아니었다.

예의상 몇 번 사양을 했는데, 어머님이 안 주신다고 하시길래 섭했다고 한다.
"그깟 몇 푼이나 한다고 ..."
난 전화 통화하면서 한없이 흘러 내리는 눈물을 참느라 애 먹었다.
"당신이 배 고픈 사람의 마음을 조금이나마 이해하니??"

아내를 이해 못하는 건 아니다.
이렇게 주말부부로 살아온 것도 어언 4년차다.
게다가, 둘째도 배 속에서 무럭무럭 자라고 있다.
이젠, 아내도 지칠대로 지쳤으리라.
주위에서도 수 없이 이런 질문을 과장한 질타를 받았으리라.
"왜 이렇게 살어... 되든 안 되든 합쳐 살아야지..."
"빨리 돈 벌어, 합쳐야지, 애두 이젠 둘인데..."
아내도 많이 힘들었으리라.
나도 이런 질타를 받으면, 잠시 숨겨져 있던 우울증이 치밀어 올라 많이 힘든데,
임신까지 한 아내는 오죽할까?라는 생각이 든다.
오히려, 주위에서 걱정스럽다는 이런 질문들이 우리 부부를 더 힘들게 하는 거 같다.
이젠 이런 질문들을 그만 할 때도 된 거 같은데 말이다.

그러나, 나 또한 아내한테 섭한 마음은 감추지 못하겠다.
이런 현실을 잘 알면서도 날 믿고 결혼까지 해 준 아내가
이제 와서 이렇게 힘들어 하는 소릴 하면 나는 맥이 빠진다.
이런 소릴 들으면 때론 그 자리에 주저앉아 멍해질 때가 많다.

한없이 나의 인생에 대해서 원망도 하고,
때론 해선 안 되는 부모님 원망도 하고...

나 이젠 너무 무거워졌다.
거대해져버렸다.
이런 현실을 다 감내하겠노라 자신하던 나는 이 무게에 이젠 비틀거리기 시작했다.
참고, 참고... 또 참고 ...
그 참음을 가슴 속 깊이 숨겨 놓았더니,
그 가슴이 너무 무거워져 버렸다.
아내조차 이젠 버거워할 때면 나는 그 무게를 버티지 못하고
그냥 쓰러져 버렸으면 좋겠다는 생각을 수 없이 해 왔다.
마치 막다른 골목에 다다른 것처럼 모든 걸 포기하고 말야...

요즘 사람들이 나보고 가끔 묻는다.
그렇게 활발한 사람이 요즘 왜 그렇게 말이 없냐고?
그 질문에 대부분 빙긋이 웃고 말지만,
또 가슴이 눈물을 내뱉곤 한다.
꾸욱 참기 위해 웃고 말 뿐이다.

난 이제 어떤 길을 걸어가야 하는 것일까?
언제나 나의 앞엔 질문들이 늘어서 있다.
질문에 답을 못하면 바로 주저앉을 거 같아 용도 써 보고,
때론 주저앉고 싶어 시간에 맡기기도 하고...
이젠 스스로 조절할 수 없는 상황인가?

지금 이 순간에도 치밀어 오르는 우울증과 눈물 찌거기에 스스로 화가 나기 시작한다.
주저앉을 것인가, 추스릴 것인가...







불쌍한 나의 아내에게 미안하고 죄스러울 뿐이다.
아무 것도 없는 나에게 와서 현대판 이산가족으로 생고생을 하고 있으니 말이다.
단지 한 순간이 힘들어 나에게 그런 넋두리라도 하는 것인데,
난 나의 무게에 그런 아내를 미워하니 말이다. 

'쩐의시대 > 살자, 빡시게' 카테고리의 다른 글

나는 당신의 후배인 것이 자랑스럽습니다.  (0) 2008.07.15
조급증  (0) 2008.02.27
첫 번째 천사 (2004년 11월 19일)  (0) 2008.02.27
좋은 아빠  (0) 2008.02.27
쉼에 대한 욕망  (0) 2008.02.27
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,
쉬고 싶다...
딱 1주일만 쉬고 싶다...
아무 일도 안 하고 딱 1주일만 쉬고 싶다...

지금 나의 이런 지치고 힘없고 어이없는 모습을 다른 사람들에게 보여주고 싶진 않다.
1주일동안 충전해서 다시 나타나고 싶다...

나도 이젠 나 자신을 컨드롤 할 수 있는 단계가 아닌가보다.
너무 너무 힘들다.

정말로 나에게 지금 당장 필요한 것은 휴식이다.
휴식...
주말도 없는 나에게 휴식은 정말 필요하다.

정말 울고 싶다.

한 가정의 가장으로써 해야할 것은 해야 하는 상황인데도,
그 상황이 이젠 나에겐 너무 벅차게 다가온다.

이런 현실에 나는 아무 것도 하지 못하고 마냥 울고만 싶다.
소리 없이 울음을 뱉어내고 싶다.

'쩐의시대 > 살자, 빡시게' 카테고리의 다른 글

나는 당신의 후배인 것이 자랑스럽습니다.  (0) 2008.07.15
조급증  (0) 2008.02.27
첫 번째 천사 (2004년 11월 19일)  (0) 2008.02.27
좋은 아빠  (0) 2008.02.27
사는거란??  (0) 2008.02.27
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,

배열 활용

IT/shell 위 댄스 2008. 2. 27. 19:03
#!/bin/sh
SN_PID=`ps --cols=100 -aef | grep "search_node CUVE_s0_sn0" | grep -v "grep" | awk '{ printf("%s\n", $2); }'`
if [ $SN_PID"p" == "p" ]; then
       SN_PPIDS=`ps --cols=100 -aef | grep search_noded | grep -v "grep" | awk '{ printf("%s\n", $3); }'`
       SN_CIDS=`ps --cols=100 -aef | grep search_noded | grep -v "grep" | awk '{ printf("%s\n", $2); }'`
       nNum=0;
       for pid in $SN_PPIDS
       do
               SN_PPIDS_ARR[$nNum]=$pid;
               nNum=`expr $nNum + 1`
       done
       nNum=0;
       for cid in $SN_CIDS
       do
               if [ ${SN_PPIDS_ARR[$nNum]} -eq 1 ]; then
                       echo "kill .... [$cid]"
                       kill -9 $cid
               fi
               nNum=`expr $nNum + 1`
       done
fi
exit 0


--> 이것보다 더 쉬운 방법???
ps --cols=100 -aef | awk '{ if(($3 == 1) && (index($8, "search_noded") != 0)) { system("kill -9 " $2); } }'

'IT > shell 위 댄스' 카테고리의 다른 글

쉘에서 배열 사용하기  (0) 2017.04.03
디렉토리에서 확장자가 없는 파일 찾기(find, ${#변수명}, ${변수명:n:m})  (0) 2008.10.07
파일 처리  (0) 2008.02.27
awk  (0) 2008.02.27
date 매뉴얼  (0) 2008.02.27
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,

파일 처리

IT/shell 위 댄스 2008. 2. 27. 19:01
[ 파일 다루기 ]

[ -f 파일명 ] : 파일이 있는 경우
[ -s 파일명 ] : 파일이 존재하고 내용이 있는 경우
[ -d 파일명 ] : 파일이 아니고, 디렉토리인 경우
[ -r 파일명 ] : 읽기가 가능한 파일인 경우
[ -w 파일명 ] : 쓰기가 가능한 파일인 경우
[ -x 파일명 ] : 파일이 존재하고 실행 가능한 경우
[ ! -옵션 파일명 ] : 옵션의 조건이 아닐 경우



[ 파일 내용 수정하기 ]

#!/bin/csh

set FILENAME=$1
ed $FILENAME <<EOF
1,\$s/^host /#host /
.
w
q
EOF


[ 하위 디렉토리 안의 파일 내용 모두 수정하기 ]

#!/bin/sh

for i in `grep 경북 * -rls`
do

   (vim -c :%s/경북/경상북도/g -c :wq $i);

done


exit 0

******

vi에서 -c 옵션을 사용하면 파일을 열면서 동시에 지시한 vi 명령을 수행한다.

'IT > shell 위 댄스' 카테고리의 다른 글

디렉토리에서 확장자가 없는 파일 찾기(find, ${#변수명}, ${변수명:n:m})  (0) 2008.10.07
배열 활용  (0) 2008.02.27
awk  (0) 2008.02.27
date 매뉴얼  (0) 2008.02.27
쉘로 작성한 ftp 활용  (0) 2008.02.27
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,

awk

IT/shell 위 댄스 2008. 2. 27. 18:59

[ 사용법 ]
 
  awk 은 설계자인 Aho, Weingrger, Kernighan의 첫글자로 명명되어진 패턴검색과
  처리 기능을 가진 인터프리티드 프로그래밍 언어로서 필터링, 치환, 간단한 리포팅 작업을 제어할수 있다.

1) "awk" 형식
     awk 프로그램은 세부분으로 구성되어 진다.
            BEGIN Section : 파일을 읽기전에 실행
            Pattern Statment Section : 파일의 각 레코드 라인을 읽어들일 때 마다 실행
            END Section : 파일을 다 읽어들인 뒤 실행

            BEGIN { statements ….}
                       /pattern expression / { statements  .... }
           END { statements… }

     여러개의 statement를 한 라인에 쓸때는 statement ; statement 의 형식으로 기술한다.

2) awk 명령어 실행 방법
     "awk" 프로그램을 명령어 상에서 입력하는 경우
     $ awk '{print $0 }' datafile ....

     단일인용문( ' ' ) 안에 프로그램을 기술한다. 데이터 파일을 정의하지 않으면 표준 입력으로부터 데이터를 입력 받는다.
     awk 프로그램을 파일로 작성하는 경우는
     $ awk -f awk-program-filename data-filenames
     ex)
        $ awk ' BEGIN { print "awk 프로그램 실행 연습입니다" } '
        $
        $ awk '{ print $1, $2 } ' data1
          100 200
          300 400
          500 600
       $
       $ cat ex01
        # This is sample file
        BEGIN {
            print "Hello, I'm Kim "
           exit }
      $
      $ awk -f ex01
         Hello, I'm Kim
      $


  3) 레코드
     레코드는 입력된 파일의 한 줄을 말한다. 라인 전체의 내용은 $0 변수명으로 사용되며,
     입력된 레코드 번호는 NR 이라는 변수로 표시 된다.

  4) 필드
     입력된 레코드에서 스페이스 또는 탭으로 구분되는 문자들을 말한다.
     각각의 필드는 $1,$2,$3,....$n 으로 필드위치에 따라 변수명으로 표기되며 현재 필드값은 NF 변수로 표시된다.

  5) 변수
     위치변수 는 필드 또는 레코드를 나타낸다.
     $0 : 현재 입력된 레코드를 나타내는 변수
     $1 : 현재 입력된 레코드의 첫 번째 필드를 나타내는 변수
     $n : 현재 입력된 레코드의 n번째 필드를 나타내는 변수
   
     재정의 변수는 입력된 레코드의 구성과 크기에 대한 정보를 제공한다.
       NR : 레코드 수
       NF : 필드 수
       FS : 필드 구분 문자
       RR : 레코드 구분 문자
       OFS : 출력 필드 구분 문자
       ORS : 출력 레코드 구분 문자
       FILENAME : 현재 입력된 파일 이름
      OFMT : 출력 인쇄 형식
     사용자 정의 변수는 프로그램의 어느 곳에서도 사용자가 정의하여 사용 할 수 있으며, 숫자 또는 문자열 값을 가진다.
     초기화 하지 않으면 자동적으로 null(0) 문자를 가진다.
     ex)
       $ cat data1
       100 200
       300 400
       500 600
       $ cat ex02
         BEGIN { OFS="------" }
         { print $1,$2 }
       $
       $ awk -f ex02 data1
        100------200
        300------400
        500------600
      $
      $ cat ex03
        { x = $1 + $2
           y = y + x }
        END { print y }
      $
      $ awk -f ex03 data1
       1600
      $

  6) 패턴 과 연산자
      패턴의 형식은 egrep과 유사한 형식을 가진다.
     정규식을 사용하여 패턴을 구성할 수 있으며 패턴은 "/ /" 형식으로 지정한다.
      "/ /,/ /" 형식을 사용하여 패턴으로 범위를 지정할 수 있다.
     ex)
       $ cat ex04
       $2 ~ /^[0-9]+$/ { print $2 }
        -> 두 번째 필드가 숫자로만 구성되어 있으면 두 번째 필드값을 출력
       $ awk -f ex04 data1
         200
         400
         600
       $
       $ cat ex05
       $0 ~ /[Ee]nd/ { print "end of", FILENAME }
       $
       -> 읽어 들인 레코드의 값이 End 또는 end이면 "end of data1" 과 같은 형식으로 출력
       $ cat ex05_1
          /Begin/,/End/ { total += $1 }
          END { print "Total = " total }

       연산자는 관계연산자, 패턴 연산자, 산술연산자, 지정 연산자, 복합지정연산자, 증감연산자 가 있다.
       관계연산자는 숫자 또는 스트링 값을 비교할 때 사용한다.
         ==            같다
         !=           같지 않다
         >             크다
         <              작다
         >=            크거나 같다
         <=            작거나 같다

        ex)
          NF != 5 { print "필드수가 5개가 아님"}
          $1 >= 10000 { print "첫번째 필드값이 10000 보다 크거나 같다" }
          $1 >= "s" { print " 첫 번째 필드가 s 보다 뒷문자(tuvw..)이다"}
          $1 < $2 { print "두번째 필드 값이 첫 번째 필드 값보다 크다"}

          패턴연산자는 스트링 패턴과의 일치 여부를 비교할 때 주로 사용 된다.
             ~             패턴과 일치
             !~           패턴과 같지 않다.
         ex)
           $1 !~ /^[0-9]+$/ { print "첫번째 필드가 숫자가 안니다" }
           $2 ~ /korea/ { print "두번째 필드값이 korea 이다"}

         산술연산자는 수식 계산에 사용된다
           +             더하기
           -             빼기
           *             곱하기
           /             나누기
          %             나누어서 남은 나머지
         지정 연산자는 오른쪽 값을 왼쪽 변수에 대입한다
          =             지정연산
         ex) a = 10
        복합 지정 연산자는 산술연산자와 지정연산자를 결합해서 사용한다
        += , -=, *=, /=, %=
        ex) a += 5 : a = a + 5 와 같은 문장이다.
        증감 연산자는 값을 1씩 증가하거나 감소 시킬 때 사용한다
        ++           1 증가
        --           1 감소
        ex)
          $ cat ex06
             END { a = 0
                       print "a++ = ", a++
                       print "a-- = ", a--
                       exit
            }
          $ cat ex07
              BEGIN { a = 0 }
          $1 > 100 { a++ }
              END { print "첫번째 필드의 값이 100보다 큰 경우는 ", a, "번입니다" }
          $
          $ awk -f ex07 data1
          첫번째 필드의 값이 100보다 큰 경우는 2 번입니다


  7) 출력문
     print 문은 출력하고자하는 문자열은 "출력내용" 의 형식으로, 변수값은 변수명을 사용하여 출력한다.
     " , " (쉼표)는 "print"문 안에서 필드를 구분한다. "" 사이의 문자열은 하나의 필드로 취급된다.
    출력방향을 조정하기위해 " > " 문자와 " >> " 문자를 사용할수 있다. 출력될 파일이름은 인용부호("")안에서 사용한다.
    ex)
    $ cat ex08
    { print $1,$2 > "sample"}
    $
    $ awk -f ex08 data1
    $ cat sample
    100 200
    300 400
    500 600
    "printf" 문을 사용하여 출력 양식을 지정할 수 있다.
   사용형식은 printf "format",expression1, expression2,..... 이다.
   format에서 변환사양은 % 기호를 붙여서 표시한다
   %d            십진수
   %o            8진수
   %x            16진수
   %s            문자열
   %f            소수
   %e            지수를 사용한 소수
   %g            %f,%e중 짧은 형태의 출력을 사용한다.
   ex)
   $ cat ex09
   $1 ~ /^[0-9]+$/ { printf "첫번째 필드 값은 %d 입니다\n",$1 }
   $
   $ awk -f ex09 data1
    첫번째 필드 값은 100 입니다
    첫번째 필드 값은 300 입니다
    첫번째 필드 값은 500 입니다
   $
     파이프(|)를 사용하여 " print"문의 출력을 UNIX 시스템 명령어의 입력으로 사용할 수 있다.
     awk 안에서 유닉스 명령과 인수를 사용하는 경우는 인용부호(" ")로 묶어서 사용한다.
   $ cat ex09
     END { print " Pipe Test ...Is it OK? " | "mail guest" }
   $
   $ awk -f ex08 data1
   $ login guest
     Welcome to guest account
    You have mail

  8) 프로그래밍 언어 구조 제어문들
  " if " 문
   ex)
    { if ( $1 < 100 && $2 > $3 )
        { print "첫번째 필드값이 100보다 작고 두 번째 필드값이 세 번째 필드값 보다 큽니다" }
    }
   ex)
    { if ( $1 > 100 || $2 >100 )
        { print "첫번째 필드값이 100보다 크거나 두 번째 필드값이 100보다 큽니다" }
    }
 
  " while " 문
    { i = 1
       while ( i <= NF )
          { print "필드수가 1개보다 작거나 같습니다" }
    }

   " for " 문
   ex)
    $ cat ex10
     { for ( a = 1 ; a <= NF ; a++ ) print NR,a ,$a }
    $ awk -f ex10 data1
     1 1 100
     1 2 200
     2 1 300
     2 2 400
     3 1 500
     3 2 600
   $
   " break "문은 순환문의 수행을 중지 시키고 순환문 밖의 문장을 수행한다
   " continue "문은 순환문의 수행을 중지하고, 순환문의 처음 조건을 테스트한다.
   " next " 문은 다음 입력 레코드를 읽어 들이고 프로그램 수행은 패턴문의 처음을 수행한다.
   " exit " 문은 프로그램 실행을 종료한다
   ex)
   $ cat ex11
     { for ( n = 1; ; n++ )
         { if ( n <= NF ) { print NR, n, $n
            continue }
          break
     } }
   $
   $ cat ex12
     NF > 2 { print NR, NF; next }
   $
   $ cat ex13
   $1 > 100 { print NR, " $2= ", $2, "$2값 오류"
     exit 99 }
   $

  9) awk에서 많이 사용되는 함수들
    " length " 함수는 주어진 문자열의 문자 개수를 반환한다. length 함수에 인수가 없으면 현재 입력 레코드의 문자수를 반환한다.
    $ cat ex14
     { print NR, "입력된 문자열의 문자수는 " , length, "개입니다" }
   $
   $ cat ex15
     { print NR, "첫번째 필드의 문자수는 ", length($1), "개입니다" }
   $
     " substr " 함수는 지정한 문자열에서 원하는 개수 만큼의 문자들을 추출하여 반환한다
   $ cat ex16
     BEGIN {
          print substr("Happy Birthday",7,9)
          exit }
    $ awk -f ex16
     Birthday
     " index " 함수는 문자열에서 지정하는 문자열이 있는 위치를 나타낸다.
     문자열에서 지정한 문자열이 포함되어 있지 않은 경우는 0 값을 반환한다.
    $ cat ex17
      BEGIN {
            print index("Hello This is Kim","This")
            exit
      }
    $ awk -f ex17
      7
    $
      " sprintf " 함수는 printf함수와 사용방법이 유사하지만 출력의 방향이 지정연산자의 왼편에 있는 변수명이다.
    $ cat ex18
     { var = sprintf("출력연습 : 첫 번째 필드 : %d ",$1)
        print var
     }
   $
   $ awk -f ex17 data1
     100
     300
     500
   $

  ※ awk 함수들

 

  •  문자열 연산
    •  gsub(reg,s)
      입력 문자열의 전반에 걸쳐 정규표현식 r을 문자열 s로 대치한다
    • gsub(reg,s1,s2)
      문자열 s2에서 정규표현식 r을 s1으로 대치한다 
    • index(s1,s2)
      s1에서 s2의 위치를 넘겨준다  만약 없다면 0을 넘겨준다 
    • length(arg)
      인자의 길이를 넘겨준다 
    • match(s,r)
      문자열 s에서 정규표현식 r과 매칭되는 부분의 위치를 넘겨준다 
    • split(string,array[,seperator])
      구분자를 기준으로(지정하지 않으면 공백 기준)해서 지정한 문자열을 배열로 만든다  배열[1],  배열[2], ....... 
    • sub(r,s),  sub(r,s1,s2)
      gsub과 동일하다
      단지 정규표현식과 일치하는 문자열이 여러개라도 처음 문자열만 대치된다
    • substr(s,m)
      문자열 s에서 m번째 위치에서 끝까지의 문자를 리턴한다 
    • substr(s,m,n)
      문자열 s에서 m번째 위치에서 n번째까지의 문자를 리턴한다 
    • tolower(str)
    • toupper(str)
  • 수치 연산
    • atan2(x,y)
      y/x의 arctangent값을 라디안 단위로 넘겨준다 
    • cos(x)
    • exp(arg)
    • int(arg)
    • log(arg)
    • rand()
      0과 1사이의 난수를 발생한다 
    • sin(x)
    • sqrt(arg)
    • srand(expr)
      인자를 가지고 난수를 발생한다
      인자가 주어지지 않으면 시간을 가지고 난수를 발생한다 
  • 입출력/프로세스
    • close(filename)
      지정한 파일을 닫는다 
    • close(cmd)
      지정한 명령어 파이프를 닫는다 
    • delete array[element]
      지정한 배열 요소를 지운다 
    • getline()
      다음 레코드를 읽어 들인다 
    • getline[variable] [< "filename"]
      파일에서 읽어들인다 
    • next
      다음 레코드(라인)을 입력받는다
      getline()과 유사하지만 /패턴/동작을 새롭게 시작한다
      getline()은 다음 라인을 읽기만 한다 
    • print [args] [> "filename"]
      인자를 출력한다 
    • printf "format" [,expressions] [> "filename"]
      형식에 맞춰 출력한다 
    • sprintf (format [,expressions])
      printf와 마찬가지로 사용하는데 값을 리턴하기만 하고 출력은 하지 않는다 
    • system(command)
      시스템 내부 명령어를 실행한다
  • 'IT > shell 위 댄스' 카테고리의 다른 글

    배열 활용  (0) 2008.02.27
    파일 처리  (0) 2008.02.27
    date 매뉴얼  (0) 2008.02.27
    쉘로 작성한 ftp 활용  (0) 2008.02.27
    sed  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,

    date 매뉴얼

    IT/shell 위 댄스 2008. 2. 27. 18:57
    %      % 문자 그 자체
    n      줄바꿈
    t      수평 탭

     시간 필드:
     %H     시 (00..23)
    %I     시 (01..12)
    %k     시 ( 0..23)
    %l     시 ( 1..12)
    %M     분 (00..59)
    %p     로케일의 AM 또는 PM
    %r     시간, 12-시간제 (hh:mm:ss [AP]M)
    %s     1970-01-01 00:00:00 UTC (비표준 확장기능)로 부터 경과된 초
    %S     초 (00..61)
    %T     시간, 24-시간 (hh:mm:ss)
    %X     로케일에서 정의한 시간 표현(%H:%M:%S)
    %Z     시간대 (에, EDT), 시간대를 결정할 수 없는 때는 아무 값도 출력하지 않는다.

     날짜 필드:
    %a     로케일의 약식 요일 이름 (Sun..Sat)
    %A     로케일의 완전한 요일 이름, 가변 길이 (Sunday..Saturday)
    %b     로케일의 약식 월 이름 (Jan..Dec)
    %B     로케일의 완전한 월 이름, 가변 길이 (January..December)
    %c     로케일의 날짜와 시간 (Sat Nov 04 12:02:33 EST 1989)
    %d     월 중 일 (01..31)
    %D     날짜 (mm/dd/yy)
    %h     %b 와 동일
    %j     연 중 일 (001..366)
    %m     월 (01..12)
    %U     연 중 주 번호, 일요일을 주의 첫번째 날로 생각 (00..53)
    %w     요일 번호 (0..6), 0 은 일요일
    %W     연 중 주 번호, 월요일을 주의 첫번째 날로 생각 (00..53)
    %x     로케일의 날짜 표현식 (mm/dd/yy)
    %y     연 중 일의 마지막 두 숫자 (00..99)
    %Y     연 (1970...)

     기본적으로, date 은 숫자 필드를 0 으로 채운다.  GNU date 는 다음과 같은 비표준 수치 변형자를 인식한다:
    -      (하이픈) 필드를 채우지 않는다.
    _      (언더스코어) 필드를 공백으로 채운다.

     `+'로  시작하지  않는  인수가  있다면, date 는 시스템 시계를 주어진 시간과 날짜로 설정한다.  인수는 모두 숫자로
    구성되어 있으며 다음과 같은 의미를 지닌다:

     MM     월
    DD     월 중 일
    hh     시
    mm     분
    CC     연도의 처음 두 숫자 (선택적)
    YY     연도의 나중 두 숫자 (선택적)
    ss     초 (선택적)

     오로지 수퍼유저만 시스템 시계를 변경할 수 있다.

     옵션
    -d datestr, --date datestr
           datestr 에서 지시한 대로 시간과 날짜를 출력한다.  이 형태는  거의  모든  공통  형식을  사용할  수  있다.
           출력은 기본적인 출력 형식을 띠거나 `+' 로 시작하는 인수가 있을 때 date 는 인수에서 주어진 대로 출력한다.

     --help 표준출력으로 사용법을 출력하고 정상적으로 종료한다.

     -s datestr, --set datestr
           시간과 날짜를 datestr로설정하며그형식은거의모든공통형식을사용할수있다.  월 이름,  시간대,  `오전',`오후'
           등을 포함할 수 있다.

     -u, --universal
           시간과  날짜를  지역  시간이  아니라  Coordinated Universal Time ( 그리니치 표준시 ) 형식으로 출력하거나
           설정한다.

     --version
           표준출력으로 버전정보를 출력하고 정상적으로 종료한다.

     
    이틀 전의 날짜를 출력하기 위해서는

            date --date '2 days ago'

     3 개월하고 하루 지난 날짜를 출력하기 위해서는

            date --date '3 months 1 day'

     올해 크리스마스 날짜를 출력하기 위해서는

            date --date '25 Dec' +%j

     오늘 날짜를 완전한 월 이름, 월 중 일을 포함하는 형식으로 출력하기 위해서는

            date '+%B %d'

     하지만 처음 9 일에 대하여 '%d'는 2 자리를 맞추기 위하여 0을 채우기 때문에 예를 들어 `date -d  1-may  '+%B  %d''
    라고 하면 `May 01' 라고 출력하므로 원하는 결과가 아닐 수도 있다.

     한 자리 수 날짜에 대하여 앞에 0 이 안나타도록 하기 위해서는 비표준인 `-' 변형자를 사용하여 채움을 막는다.

            date -d 1-may '+%B %-d'

    'IT > shell 위 댄스' 카테고리의 다른 글

    파일 처리  (0) 2008.02.27
    awk  (0) 2008.02.27
    쉘로 작성한 ftp 활용  (0) 2008.02.27
    sed  (0) 2008.02.27
    string 추출  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,
    ftp -n $FTP_SERVER_IP1 << EOF
    user $FTP_SERVER_USER1 $FTP_SERVER_PASS1

      cd $FTP_PATH_SMALL_1

      mkdir small
    cd small

      mkdir $DIR_PATH1
    cd $DIR_PATH1

      mkdir $DIR_PATH2
    cd $DIR_PATH2

      mkdir $DIR_PATH3
    cd $DIR_PATH3

      binary
    put $SRC_FILE

    bye
    EOF

    'IT > shell 위 댄스' 카테고리의 다른 글

    awk  (0) 2008.02.27
    date 매뉴얼  (0) 2008.02.27
    sed  (0) 2008.02.27
    string 추출  (0) 2008.02.27
    thumbnail 생성  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,

    sed

    IT/shell 위 댄스 2008. 2. 27. 18:55

    [ 사용법 ]

      sed는 stream editor의 약어이며 문자를 스트림으로 나타나는 입력을 수정하거나 편집하는데 사용되는 툴입니다.
      유닉스에서 제공하는 다른 편집기와의 차이점은 원본 파일을 변경시키지 않고
      명령이 실행 되는 필터 기능을 가지고 있는 것입니다.
      그래서 변경된 내용을 보존하기 위해서는 적절한 조치가 필요합니다.


       1)   "sed" 명령어 실행 형식
      sed [-n][-e edit_command][-f command_file][ input_data_files ..]

      옵션:
      -n     결과행의 출력을 하지 않는다
      -e     편집할 명령을 기술한다. 각각의 편집 명령마다 이 옵션을 붙인다
      -f     편집할 명령을 파일로 작성한 뒤 파일에서 읽어서 명령을 실행한다
       input_data_file     입력을 지정하지 않으면 표준입력으로부터 입력을 읽어 들인다.
      사용 형식 예제:
      $ sed -e 'sed_command' -e 'sed_command' .... filenames
      $ sed -f sed_script_file filenames
      $ cat datafile
        Hello this is kim.
        I'm so happy to meet you.
        Test sample
        sample program
        Java programming

       2) 라인 선택 출력과 파일로 출력
      라인을 선택하여 출력할때는 -n 옵션과 sed명령중 p 명령을 이용하여 구현할 수 있다.
      $ sed -n '1,3p' datafile <-- 1번-3번라인까지 출력한다.
        Hello this is kim.
        I'm so happy to meet you.
        Test sample
      $ sed -n '/^s/p' datafile
        sample program : 라인의 시작이 's'인 라인을 출력
      $ sed '/^s/p' datafile
        Hello this is kim.
        I'm so happy to meet you.
        Test sample
        sample program
        Java programming
      $ sed -e '/^sample/w sam_file' datafile
      $ cat sam_file
        sample program

       3) 삭제, 추가, 삽입, 치환
      삭제예:
      $ sed '1,3d 'datafile
        sample program
        Java programming
      $ sed '/^sample/,/^Java/d' datafile : 라인중 sample로 시작하는 라인 부터 Java로 시작하는 라인 까지 삭제
        Hello this is kim.        
        I'm so happy to meet you.
        Test sample
      추가예:
      $ cat file1         : 각 라인의 아래에 '=====' 라인이 추가된다
        a\
        =====
        $ sed -f file1 datafile
        Hello this is kim.
        =====
        I'm so happy to meet you.
        =====
        Test sample
        =====
        sample program
        =====
        Java programming
        =====
        삽입예:             : 각 라인 위에 '***' 라인이 추가된다
      $ cat file2
        i\
        ***
        $ sed -f sed_script_file filenames
        ***
        Hello this is kim.
        ***
        I'm so happy to meet you.
        ***
        Test sample
        ***
        sample program
        ***
        Java programming
        치환예:
        $ sed -n '1,3s/t/T/gp' datafile         :변경된 라인만 출력
          Hello This is kim.
          I'm so happy To meet you.
          TesT sample
        $ sed '1,3s/t/T/g' datafile             :모든라인을 모두 출력
          Hello This is kim.
          I'm so happy To meet you.
          TesT sample sample program
          Java programming
        $ sed -n '1,3s/t/T/gw sam_file2' datafile     : 변경된 라인만 sam_file2 파일에 저장 한다
        $ cat sam_file2
          Hello this is kim.
          I'm so happy To meet you.
          TesT sample
        $ sed 's/\/export\/home/\home3/g']
          '/' 문자는 '\'문자를 사용하여 표시한다.
          /export/home is user01's base directory <-- 입력라인
          /home3 is user01's base directory <- 출력라인

       "); // :script -->

    'IT > shell 위 댄스' 카테고리의 다른 글

    awk  (0) 2008.02.27
    date 매뉴얼  (0) 2008.02.27
    쉘로 작성한 ftp 활용  (0) 2008.02.27
    string 추출  (0) 2008.02.27
    thumbnail 생성  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,

    string 추출

    IT/shell 위 댄스 2008. 2. 27. 18:54
    [ 확장자 추출 ]
    #!/bin/sh

    DIR="/test/"
    A=`ls $DIR`

    for i in `echo "$A"`
    do
    echo ${i##*.}
    done

    exit 0

    --------------------[Result]---------------------
    png
    gif
    jpg
    bmp
    gif
    png
    png
    bmp
     

    [ 확장자를 제외한 path 추출 ]
    #!/bin/sh

    CURRENT_DIR=`pwd`
    ## CURRENT_DIR = /home/BLOG/DB_BRIDGE.tar
    DB_BRIDGE_HOME=${CURRENT_DIR%.*}
    echo $DB_BRIDGE_HOME

    exit 0

    ----------------------[Result]---------------------------
    /home/BLOG/DB_BRIDGE
     


    [ 처음에 오는 문자를 찾아 앞부분 추출 ]
    home> cat -n Test
    #!/bin/sh

    echo ${1%%.*}

    home>sh Test aa.bb.cc.dd
    aa
    home>sh Test .aa.bb.cc.dd

    home>
     

    [ n번째에서 m번째 문자 추출 ]
    #!/bin/sh

    STRING="This is Test"
    STR=${STRING:6:8}
    echo $STR <-- "is"
    STR=${STRING:6}
    echo $STR <-- "is Test"
    STR=${STRING::3}
    echo $STR <-- "Thi"

    'IT > shell 위 댄스' 카테고리의 다른 글

    awk  (0) 2008.02.27
    date 매뉴얼  (0) 2008.02.27
    쉘로 작성한 ftp 활용  (0) 2008.02.27
    sed  (0) 2008.02.27
    thumbnail 생성  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,
    #!/bin/sh

    ##
    # $1 : outfile
    # $2 : infile
    # $3 : image Type (gif : 1, jpg, jpeg : 2)
    # cjpeg 명령어의 smooth 옵션의 값은 낮을수록 용량이 커지나, 선명하게 보인다.
    ##

    curDate=`/bin/date +%Y%m%d%H%M%S`;
    curDir=\"./imgTemp\";

    if [ \"$3\" == \"1\" ]; then
    /usr/bin/giftopnm $2 > \"$curDir/news_$curDate.pnm\";
    /usr/bin/pnmscale -xy 100 100 "$curDir/news_$curDate.pnm" | /usr/bin/cjpeg -progressive -optimize -smooth 1 -outfile $1;
    else
    /usr/bin/djpeg -pnm $2 > "$curDir/news_$curDate.pnm";
    /usr/bin/pnmscale -xy 100 100 "$curDir/news_$curDate.pnm" | /usr/bin/cjpeg -progressive -optimize -smooth 1 -outfile $1;
    fi

    rm -rf $curDir/news_$curDate.pnm;

    exit 0 

    'IT > shell 위 댄스' 카테고리의 다른 글

    awk  (0) 2008.02.27
    date 매뉴얼  (0) 2008.02.27
    쉘로 작성한 ftp 활용  (0) 2008.02.27
    sed  (0) 2008.02.27
    string 추출  (0) 2008.02.27
    블로그 이미지

    쩐의시대

    나답게 살아가고 나답게 살아가자

    ,