엑셀 파일을 행 별로 정렬하는 방법을 알아보자.
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,$!
-> 두번째 행부터 마지막 행까지
'Computer Science > [19-상] Linux Bash Script' 카테고리의 다른 글
[Linux_bash] pr,sed,grep: 문서 양식화하고 여백 지우기 (0) | 2020.02.29 |
---|---|
[Linux_bash] redirection 이해하기 (0) | 2020.02.20 |
[Linux_bash] regex,grep: 엑셀 파일에서 두개의 단어로 된 셀 찾기 (0) | 2020.02.11 |
[Linux_bash] regex: 날짜 형식 바꾸기 (0) | 2020.02.11 |
[Linux_bash] regex,grep: 점(.)이 있는 문자열 찾기 (0) | 2020.02.11 |
댓글