ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 기초 명령어5 (uniq, shuf, cut, awk)
    리눅스 2021. 1. 16. 17:47

    nl b

    ->

         1 one
         2 two
         3 three
         4 three
         5 three
         6 two
         7 two
         8 two

    라고 할때 

     

     

    1. uniq b 

    b 파일에 중복되어 있는 것들만 찾아준다. 

     

    uniq b

    ->

    one
    two
    three
    two

     

     

    2. sort를 이용해서 다음과 같이 출력할 수도 있다. 

    sort b | uniq

    ->

    one
    three
    two

     

    3. uniq -c b | nl

    ->

         1       1 one
         2       1 two
         3       3 three
         4       3 two

    -c 옵션은 중복되는 문자를 카운트한다. 

     

     

    4. uniq -u b

    ->

    one
    two

    중복되지 않는 것들만 출력한다. 

     

     

    5. uniq -d b

    ->

    three
    two

    중복된것만 보여준다.

    대문자 -D는 중복된 것들을 뿌려준다. 

     

     

    6.  uniq k -f 

    ->

         1 이순신 90 95
         2 황진이 95 95
         3 한석봉 95 95
         4 신돌석 50 50
         5 김철수 50 50

     

     

    1) uniq k -f 1

    ->

    이순신 90 95
    황진이 95 95
    신돌석 50 50

    1번 필드를 기준으로 중복되지 않는 것들만 출력

     

     

    2) uniq k -f 2

    ->

    이순신 90 95
    신돌석 50 50

    2번 필드를 기준으로 중복되지 않는 것들만 출력

     

     

    7. shuf -e 10 20 30 40 50

    ->

    50
    40
    30
    20
    10

     

    ->

    20
    50
    30
    40
    10

    값을 랜덤하게 섞는다. 

     

     

    8. shuf -e 10 20 30 40 50 -n 2

    ->

    20
    10

     

    또는

    ->

    30

    10

    랜덤하게 2개를 출력 

     

     

    9. shuf kor 

    ->

         1 90
         2 95
         3 95
         4 50
         5 50

     

     

    shuf kor -n 2 | nl

    ->

         1 50
         2 95

     

    또는

    ->

         1 50
         2 90

    와 같이 랜덤으로 출력된다. 

     

     

    10. shuf -i 1-45 -n 6

    로또 번호출력하기 

     

     

     

    shuf -i 1-45 -n 6 -o lotto

    -o 옵션을 주어서 저장할 수도 있다. (lotto라는 이름으로 저장)

     

     

    11. date | cut -d ' ' -f2

    ->  01.

    date를 ' '를 기준으로 잘랐을 때 두번째 필드를 가져온다. 

     

     

    date

    ->2021. 01. 16. (토) 16:55:57 KST

     

     

    12.

    echo {1..20}

    1부터 20까지 출력

    -> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

     

     

    echo {d..h}

    -> d e f g h

    d부터 h까지 출력

     

     

    echo {A..Z} | tr -d ' '

    -> ABCDEFGHIJKLMNOPQRSTUVWXYZ

    (공백없이 출력하기)

     

     

    echo {A..Z} | tr -d ' ' | cut -c2

    ->  B

    A부터 Z까지 공백없이 출력하여 문자단위로 잘랐을 때 두번째 필드값 출력

     

     

    echo {A..Z} | tr -d ' ' | cut -c2,4,5

    -> BDE

    2, 4, 5번째 필드 출력

     

     

    echo {A..Z} | tr -d ' ' | cut -c1-10

    -> ABCDEFGHIJ

    첫번째 필드부터 10번째까지 출력

     

     

    echo {A..Z} | tr -d ' ' | cut -c10-

    JKLMNOPQRSTUVWXYZ

    10번째부터 끝까지 출력 

     

     

    13. 

    cat file1

    -> 

    이순신 90 90
    황진이 54 79
    한석봉 44 69
    신돌석 50 55
    김철수 90 69

     

     

    cat file1 | cut -f1

    -> 

    이순신
    황진이
    한석봉
    신돌석
    김철수

     

    file1에서 첫번째 필드만 잘라서 가져오기 

     

     

    cat file1 | cut -f1,2

    ->

    이순신 90
    황진이 54
    한석봉 44
    신돌석 50
    김철수 90

     

    file1에서 첫번째, 두번째 필드 가져오기 

     

     

    14. 

    ps -ef | cut -d' ' -f1

    ->

    root
    root
    root
    root
    root
    root
    root
    root

    -d옵션을 주어 ' '단위로 자른다. 

    하지만 잘 안잘리는 경우도 있다.

     

     

    who | cut  -d' ' -f1

    -> 잘 안잘려서 제대로 값을 출력할 수 없다.

     

    따라서 awk를 쓴다.

     

    who | awk '{print $2}'

    -> 2021-01-16

    who의 두번째 필드값을 가져온다. 

     

     

    cat file1 | awk '{print $1, '\t', $2}'

    -> 

    이순신  90
    황진이  54
    한석봉  44
    신돌석  50
    김철수  90

     

     

    cat file1 | awk '{print $2, '\t', $1}'

    -> 

    90  이순신
    54  황진이
    44  한석봉
    50  신돌석
    90  김철수

    거꾸로 출력할 수도 있다. 

     

     

     

     

     

     

     

     

     

    반응형

    댓글

Designed by Tistory.