커피닉스, 시스템 엔지니어의 쉼터
  bash에서 순차적 숫자를 사용하는 쉬운 방법 작성일 : 2012/05/29 18:22
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 14374
     
    제  목 : bash에서 순차적 숫자를 사용하는 쉬운 방법
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2012.5.14(월)



    1. seq 명령

    GNU의 coreutils패키지에는 seq명령(리눅스에 기본 설치, FreeBSD는 /usr/ports/sysutils/coreutils 포트를 설치하면 gseq명령으로 설치됨)이 있다. seq는 숫자를 순차적으로 출력해주는 명령이다.
    예를 들어 1부터 5까지, 또는 1부터 10까지 2씩 증가하여 출력하고 싶다면 seq사용하면 된다.

     
    $ seq 1 5
    1
    2
    3
    4
    5
    $ seq 1 2 10
    1
    3
    5
    7
    9
     


    bash 쉘스크립트의 for문에서 seq명령을 사용한 예이다. 1부터 31까지 순차적으로 출력된다.

     
    #!/bin/bash

    for i in `seq 1 31`
    do
        echo $i
    done
     


    2. bash에서 순차적 숫자(sequential numbers)

    bash 3.0이상 부터는 loop에 순차적 숫자를 사용할 수 있다. 아래는 seq를 썼을 때와 같은 결과가 나온다.

     
    #!/bin/bash

    for i in {1..5}
    do
        echo $i
    done
     


    [ 결과 ]
     
    1
    2
    3
    4
    5
     


    bash 4.0이상 부터는 증가치(increment)를 지정할 수 있다.

     
    $ echo {1..10}
    1 2 3 4 5 6 7 8 9 10
    $ echo {1..10..2}
    1 3 5 7 9
     


    3. seq명령과 bash 순차적 표현의 각각의 장점

    seq 명령을 사용할 때 장점

    1) 실수형으로 증가할 수 있다.

     
    $ seq 1 .1 10
    1.0
    1.1
    1.2
    1.3
    1.4
    1.5
    1.6
    ... 생략 ...
     


    2) 구분문자를 지정할 수 있다. 기본은 줄바꿈

     
    $ seq -s " + " 1 10
    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
     


    bash에서 순차적 숫자를 쓸 때 장점

    1) {01..10} 처럼 지정하면 01 02 03 처럼 앞에 0을 붙여준다. 0001처럼 지정할 수도 있다. (bash 4.0 부터)

     
    $ echo {01..10}
    01 02 03 04 05 06 07 08 09 10
    $ echo {0001..10}
    0001 0002 0003 0004 0005 0006 0007 0008 0009 0010
     


    2) 문자도 순차적으로 출력할 수 있다. {a..z} 나 {A..Z} 처럼

     
    $ echo {a..z}
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    $ echo {a..z..2}
    a c e g i k m o q s u w y
     


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=1737