본문 바로가기
Computer Science/[19-상] Linux Bash Script

[Linux_bash] regex,sort: 엑셀 파일에서 column 별로 sort하기

by gojw 2020. 2. 20.

엑셀 파일을 행 별로 정렬하는 방법을 알아보자.

 

1. field를 정해서 sort 명령어를 쓰는 법

 

sort - t "," -k 5 filename

 

-t: 구분자를 지정하는 옵션

",": ,(쉼표)를 구분자로 지정

 

-> 엑셀 파일을 리눅스에서 불러오면

행이 쉼표로 나누어져 있다.

 

-k: 필드를 지정하는 옵션

위의 명령어에서는 5번째 필드를 선택했다.

 

2. vi 에서 field를 정하고 sort 명령어를 쓰는 법 (복잡)

 

vi filename

:sort \([^,]*,\)\{4}

 

vi 에서 sort 명령어를 사용하면

정규표현식으로 패턴을 지정하고

그 패턴에 해당하는 것을 정렬할 수 있다.

 

[^,]: ,가 있지 않음

[] 안의 맨 앞에 ^를 써주면 포함되지 않음을 의미

*, 0개 이상의 문자와 쉼표

\([^,]*,\): 패턴을 그룹지어준다.

그룹을 짓는 방법 \(패턴\) 

\{4}: 앞의 그룹이 네번 반복

 

결과적으로 쉼표가 네번 반복된 후의 열을 말하므로

5번째 필드가 된다.

 

# 수의 크기대로 정렬하고 싶으면 n 옵션

 

sort n\([^,]*,\)\{4}

 

3. vi 에서 field를 정하고 sort 명령어를 쓰는 법 (간단)

 

vi filename

:!sort - t "," -k 5

 

!: vi에서 command line처럼 실행

! 앞에 행의 범위를 쓸 수 있다.

ex) :2,$! 

-> 두번째 행부터 마지막 행까지

댓글