커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 프로그래밍 / 개발 > 쉘 프로그래밍(shell script, 셀) 도움말
검색 : 사이트 WHOIS 웹서버 종류


  bash 자체 명령으로 원하는 문자열이 존재하는지 검사 작성일 : 2010/11/24 19:17
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 12104
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : bash 자체 명령으로 원하는 문자열이 존재하는지 검사
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2010.6.29(수)
    정리일 : 2010.11.22(월)


    grep, sed 등 외부 문자열 툴을 사용하면 '원하는 문자열'이 존재하는지 검사(grep 문자열)할 수 있다. 이 글에서는 외부 툴을 쓰지 않고, bash 자체 스크립트만으로 문자열 존재여부를 검사하는 방법을 제시할 것이다. 참고로 이 글은 'bash 자체만으로 문자열 존재유무를 알 수 있을까'라는 지인의 질문을 받고, 재미삼아 해본 것이다.

    bash에는 패턴 매칭으로 지정한 문자열을 다른 문자열로 대체하는 기능이 있다. 이 문자열 대체 기능을 활용하면 원하는 문자열 존재여부를 확인해볼 수 있다.

     
    ${parameter/pattern/string}
                  Pattern substitution.
     


    원본 문자열을 별도 저장을 해두고, 문자열 대체를 이용해서 찾으려는 문자열을 다른 문자로 대체시킨다.
    '원본 문자열'과 '대체 처리 이후 문자열'을 비교해서
    1) 다르다면, 원하는 문자열이 있다는 것이고
    2) 같다면, 찾는 문자열이 없는 것이다.

    순서도를 간단히 그려봤다.



    다음은 2개의 문자열에서 abc문자가 있는지 찾는 예제와 실행결과이다.

     
    [ 스크립트 예제 ]

    #!/bin/bash
    #
    # findstr.sh
    #
    # 2010.6.29(수)

    LIST="abcdefg ABCDEFG"

    for A in $LIST
    do
       B=${A/ab/bc}
       echo "A=$A"
       echo "B=$B"

       if [ "$A" != "$B" ]; then
          echo "찾았음."
       else
          echo "없음."
       fi
    done

    [ 실행 결과 ]

    # ./findstr.sh
    A=abcdefg
    B=bccdefg
    찾았음.
    A=ABCDEFG
    B=ABCDEFG
    없음.
     

      커피닉스 카페 최근 글
    [11/06] World News Digest:
    [06/16] [질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
    [04/22] Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~