'IT'에 해당되는 글 67건

단순 텍스트의 상품 나열이 아닌, web2.0의 개념과 온톨로지 기반으로 탄생한 듯한 오픈마켓이다.

서울의 상권을 중심으로 가상 지도를 만든 후 해당 빌딩에 업체들이 입점을 한다.
입점한 빌딩을 클릭을 하게 되면 그 업체에서 진열하는 제품들이 나온다.
오프라인 쇼핑을 좋아하는 쇼핑족이라면 자신이 찾고자 하는 물건들을
볼거리와 같이 찾을 수 있는 장점이 있다.
사용자 삽입 이미지

11번가 메인화면


강남역을 클릭시

사용자 삽입 이미지

강남역 상권을 2D로 보여주며 쇼핑족들에게 익숙한 환경을 제공한다.
이런 접근은 결국 오프라인의 장점을 온라인에 접목시키겠다는 의도인 거 같다.

그렇담, 오픈마켓의 장점을 포기한 것일까??
아니다. 온라인의 장점은 검색과 온톨로지로 표현한다.
본인이 원하는 상품을 검색 하면 해당 검색어에 대한 관계도를 표현한다.
기존의 오픈마켓은 텍스트로 줄줄이 열거한 거에 비하면 검색 인터페이스에서는
괜찮은 시도로 평가를 하고 싶다.

사용자 삽입 이미지

많은 검색 사용자들이 어쩜 단순 텍스트에 식상을 했다고 표현해도 과언은 아니나,
그렇다고 해서 주어진 환경 내에서 다른 인터페이스를 생각한다는 건 그리 만만한 작업이 아니었을 것이다.
이런 시도가 실패로 끝나더라도 검색 결과에 대한 또 다른 인터페이스를 생각케 하는 좋은 결과를
얻을 것으로 판단이 된다.

마지막으로 상품에 대한 배틀이 진행된다.
사용자 삽입 이미지

입점한 업체들 간에 굉장히 민감한 사항이 예상이 되나, 좀 더 좋은 가격, 좋은 조건, 좋은 상품을 위해
고객들의 의견을 받아들이는 것 또한 새로운 시도이다.
단순히 특정 상품에 대한 리플로서 그 상품에 대한 평가를 하는 것이 아니라,
MD들의 상품 발굴 및 상품들간의 새로운 평가 기준을 만들 수 있을 것이다.

오픈마켓의 특징을 표출하고자 비교쇼핑 까지 도입이 되었다.
사용자 삽입 이미지

이 또한 단순한 텍스트 나열이 아니라, X, Y 축을 이용한 가격대별로 모델을 표시한 것이다.
이전의 비교쇼핑이라고 하면 주로 같은 상품을 여러 사이트의 가격대를 비교했다면,
이 비교쇼핑은 여러 상품을 가격대별로 눈에 쉽게 들어오는 도표를 활용하였다.

상품에 대한 단순한 텍스트 나열이 아니라
한 눈에 쏘~옥 들어오는 많은 이미지를 사용했으며
검색 인터페이스간의 새로운 가능성을 충분히 보여주었다고 생각한다.

재미와 즐거움이 충분히 느껴진다.~~
블로그 이미지

쩐의시대

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

,
사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


사용자 삽입 이미지


2008년 2월에 일본 도쿄에서 활동하고 있는 디자이너 맥 후나미즈가 이름도 붙이지 않고
공개한 상상의 모바일 기기일 뿐이다.
그러나, 개발자의 입장이든 사용자의 입장에서든 상당히 진보적인 아이디어가 아닐 수 없다.
이런 아이디어에 접근하는 편의성에 굉장한 점수를 주고 싶다.
많은 새로운 기술들은 영화 속에 등장하는 아이디어로부터 출발하여
개발되고 상용화되는 순간 현실이 되어버린다.
이 또한 불가능한 일은 아니라고 본다.

TV에 등장하는 각종 아이템을 클릭하는 순간 그 정보를 알아낼 수 있는 시기도 멀지 않았듯이
이 또한 실세계에서 필요한 정보를 모바일 기기를 이용하여 알아내는 것 또한 멀지 않은 것처럼 보인다.
또한 이로 인하여 많은 문제가 발생할 것으로 보인다.
개개인들의 사생활이 노출된다든지, 보안 문제라든지...
그러나, 인터넷이라는 기술도 많은 우려 속에 탄생하여 문제점들을 보완하고 슬기롭게 극복해 나가고 있다.
어떤 것이 탄생할 경우에는 완벽한 것이 없다.
단지 탄생 이후 얼마나 문제를 잘 극복해 나가는냐가 진정한 문제인 것이다.

많은 우려 속에서도 이런 아이디어가 돋보이는 것은
최근 업계의 이슈인 터치 스크린, 실세계, LCD, 3D, 검색이 단연 압도적이며
이 모든 것들을 아우를 수 있는 좋은 아이디어임에는 틀림 없어 보인다.

검색엔진 엔지니어로서 이런 아이디어를 어떻게 이용할 것이며
서비스는 어떤 식으로 발전시킬 수 있을 것인가? 하는 고민이 생긴다.



원문서 URL
http://petitinvention.wordpress.com/2008/02/10/future-of-internet-search-mobile-version/

기사
http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=105&sid2=&oid=105&aid=0000008243&iid
블로그 이미지

쩐의시대

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

,

배열 활용

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
    블로그 이미지

    쩐의시대

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

    ,