반응형

리눅스 시스템을 사용하게 되면 필연적으로 문자열을 처리해야 되는 상황이 있습니다. 그 상황에 대비하여 기초적인 단계부터 심화 단계까지 한번 살펴보는 시간을 갔다록 하겠습니다.

 

우선 처음으로는 간단한 명령어로 문자열을 파싱하는 그렇지만 아주 강력한 문자열을 다루는 방법을 알아보도록 하겠습니다.

 

어쩌면 지금 소개하는 방법은 문자열을 다루는 기초이자 핵심임을 알아 두셨으면 합니다.

 

먼저 grep은 해당 열에 찾고 싶은 문자열이 있는지를 찾는 명령어 입니다.

 

<sample.txt>

root@ubuntu:/shell# cat sample.txt
I am a boy
I am a girl

<grep.sh>

root@ubuntu:/shell# cat grep.sh
#!/bin/bash

cat $1 |grep boy

root@ubuntu:/shell# ./grep.sh sample.txt
I am a boy

보시는 바와 같이 grep을 사용하면 boy가 있는 문자열을 찾게 됩니다.

 

다음은 cut입니다. cut을 활용하게 되면 구분자(char)를 이용하여 문자열을 추출하게 됩니다. 다시말하면 열로서 구분을 한다는 의미입니다. 여기서 중요한 점은 구분자 한글자이여야만 됩니다. 예를 들면 csv 파일 같은 형식에 적합하겠습니다.

 

<sample.csv>

root@ubuntu:/shell# cat sample.csv
name,category,score
choi,math,90
park,english,80
kim,korean,100

<cut.sh>

root@ubuntu:/shell# cat cut.sh
#!/bin/bash

cat $1 |cut -d',' -f1

root@ubuntu:/shell# ./cut.sh sample.csv
name
choi
park
kim

 

마지막으로는 awk 입니다. cut과는 다르게 파라미터 단위로 파싱을 하게 됩니다. 예제 파일을 통해 확인 해보겠습니다

<sample1.csv>

root@ubuntu:/shell# cat sample1.csv
name       category               score
choi   math             90
park         english           80
kim    korean          100

<cut.sh>

root@ubuntu:/shell# cat awk.sh
#!/bin/bash

cat $1 |awk '{print $1}'

root@ubuntu:/shell# ./awk.sh sample.csv
name
choi
park
kim

보시는 바와 같이 불규칙한 공백이 있는 파일에서 공백을 기준으로 파라미터화 해서 원하는 출력을 뽑아내는 모습을 확인 할 수 있습니다.

 

반응형

+ Recent posts