안녕하세요.
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줄짜리를 대체할 수 있습니다.
물론 동작속도도 빠르구요.
'IT' 카테고리의 다른 글
ssh 접속하여 비밀번호 없이 job 던지기 - sshpass 사용 예제 (0) | 2022.03.28 |
---|---|
휴대폰 LTE 속도 비교 - SKTele VS LGU알뜰폰, 의외의 결과로 LG승 (0) | 2022.03.26 |
LINUX - grep 명령어 기본 사용법 및 제외하고 출력하는 방법 (0) | 2022.03.20 |
Centos 에서 기본 shell 설정 바꾸기 - Linux (0) | 2022.02.17 |
Vampire Survivors - 새로고침, 건너뛰기 기능 설명 (0) | 2022.02.16 |
댓글