본문 바로가기
IT

LINUX - awk 기본 사용 방법 및 csv, excel 파일 내용 split하여 parsing 하기 예제

by 태환아범 2022. 3. 23.
728x90

안녕하세요.

 

LINUX 에서 사용하다보면 txt 파일을 column별로 parsing 해야하는 경우들이 많습니다.

 

이럴 때 프로그래밍 언어로 file open --> 처리 --> file close 하려면 상당히 귀찮은 경우가 많습니다.

 

이럴때 한줄로 parsing 하는 방벙이 바로 awk 입니다. awk 만으로 된 프로그램이 있으정도로 사용이 복잡한 언어긴 하지만, 저는 프로그램할때는 python이나 tcl 등의 언어를 사용하고 간단한 파일처리는 awk로 하고 있습니다.

 

만약 test1.txt 파일에

 

A B C D

1 2 3 4

5 6 7 8

9 10 11 12

 

로 띄어쓰기를 구분자로 만든 파일이 있는데, 이것을 B와 C column만 빼내고 싶을 때는

 

awk '{print $2 " " $3}' test1.txt 를 사용하면

 

B C
2 3
6 7
10 11

 

이렇게 뽑을 수 있습니다. 중간에 " "를 넣은 이유는 띄어쓰기를 만들어주기 위함입니다. 이게 없이 쓰면 B와 C column이 붙어서 출력됩니다.

 

A       B       C       D
1       2       3       4
5       6       7       8
9       10      11      12

 

이렇게 xlsx와 같이 tab으로 되어있는 것도 동일하게 사용하시면 됩니다.

 

하지만, csv 형식처럼 , 가 있을 때는 -F 옵션을 사용해주셔야합니다.

 

A,B,C,D
1,2,3,4
5,6,7,8
9,10,11,12

 

이런 파일이 있을 때는 

 

awk -F, '{print $2 " " $3}' test1.txt

 

이런 명령어를 사용하면 -F 뒤에 붙는 문자,숫자,기호를 다 split할 구분자로 사용할 수 있습니다.

 

grep과 cat으로 잘 연계해서 사용하시면 한줄로 다른 언어의 10줄짜리를 대체할 수 있습니다.

 

물론 동작속도도 빠르구요.

728x90

댓글