[Linux_bash] regex,sort: 엑셀 파일에서 column 별로 sort하기 리눅스_Bash Script


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

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,$! 
-> 두번째 행부터 마지막 행까지



덧글

댓글 입력 영역