6. colrm(특정 열 삭제) |
1) 경로 : /usr/bin/colrm
2) 요약 : 파일에서 선택된 열(column)을 삭제하는 필터
3) 사용 방법 : colrm [시작 열 번호] [종료 열 번호]
4) 추가 설명
colrm 명령어 다음에 숫자가 하나면 지정한 숫자부터 끝까지 열을 삭제합니다. 시작 열 번호와 종료 열 번호를 지정하면, 시작 열부터 종료 열까지 삭제합니다.
uname -a 명령은 시스템 정보를 출력합니다. 이 중 첫 번째는 시스템의 타입을, 두 번째는 시스템 호스트 이름을 출력합니다. colrm 명령으로 호스트 이름만을 필터링해 봅니다.
# uname -a
Linux ns.chanchan.co.kr 2.4.14-1hl #1 2020. 03. 31 (화) 16:32:23 KST i686 unknown
먼저 맨 앞에 "Linux"를 삭제하기 위해 colrm 1 6을 쓰고, 다음으로 호스트 명 이후에 정보를 삭제하기 위해 colrm 19로 19열 이후는 모두 삭제합니다.
# uname -a | colrm 1 6 | colrm 19
ns.chanchan.co.kr
7. column(파일 정렬) |
1) 경로 : /usr/bin/column
2) 요약 : 텍스트 파일의 내용을 가로로 보기 좋게 정렬하여 출력
3) 사용 방법 : collumn [옵션] [파일...]
4) 옵션
-c num : 지정한 숫자 만큼의 열(Column) 폭으로 포맷을 출력
-s char : -t 옵션을 위한 열의 구분자로 지정한 문자를 사용
-t : 입력되는 내용의 열 개수를 조사하여 출력 양식을 정함. 입력되는 내용의 열 수는 공백 문자로 구분
-x : 가로로 먼저 나열하고, 세로로 나열
5) 추가 설명
column 명령어는 열을 형식화하는 명령어입니다. 먼저 세로로 나열하고, 그 다음 가로로 나열합니다 텍스트의 결과에 적당한 탭 구분자를 넣어 보기 좋게 합니다.
다음은 ls -l 명령으로 출력되는 파일 목록 정보에 열 제목을 붙여 보았습니다. sed 1d 명령으로 합계 부분을 모두 삭제하고, printf 명령으로 각각의 필드에 대한 열 제목을 아래와 같이 추가하였습니다.
# printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM NAME\n" ;ls -l | sed 1d
PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM NAME
-rw------- 1 root root 1160 Mar 31 01:43 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Mar 31 01L55 Desktop
-rw-r--r-- 1 root root 4738 Mar 31 02L12 html_col
이 결과를 column -t 명령을 사용하여 정리할 때와 하지 않을 때로 비교하면 확연히 차이가 나는 것을 알 수 있습니다.
# (printf "PERM LINKS OWNER GROUP SIZE MONTH DAY HH:MM NAME\n" ;ls -l | sed 1d) | column -t
PERM Links OWNER GROUP SIZE MONTH DAY HH:MM NA,E
-rw------- 1 root root 1160 Mar 31 01:43 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Mar 31 01L55 Desktop
-rw-r--r-- 1 root root 4738 Mar 31 02L12 html_col
8. comm(한 줄씩 비교) |
1) 경로 : /usr/bin/comm
2) 요약 : 정렬된 두 파일을 한 줄씩 비교
3) 사용 방법 : comm [옵션] 파일1 파일2
4) 옵션
-1 : 파일2를 기준으로 파일1과 비교하여 같지 않은 부분을 출력하고, 다음 열에 같은 부분을 출력
-2 : 파일1을 기준으로 파일2와 비교하여 같지 않은 부분을 출력하고, 다음 열에 같은 부분을 출력
-3 : 파일1과 파일2를 비교하여 첫 번째 열에 파일1의 유일한 부분과, 두 번재 열에 파일2에 유일한 내용을 출력
--help : 사용법 출력
--version : 버전 정보 출력
5) 추가 설명
comm 명령어는 다목적 파일 비교 유틸리티로 이 명령을 수행하기 전에 비교할 두 파일이 정렬되어 있어야 정확하게 결과를 얻을 수 있습니다.
예제를 통해 살펴봅시다. 텍스트 파일 comm1과 comm2를 아래와 같이 만들어 봅니다.
# cat comm1
1
3
5
6
7
7
# cat comm2
2
4
6
7
7
8
9
-1 옵션을 사용해서 comm2를 기준으로 comm1과 다른 부분은 첫 번째 열에, 같은 내용은 2번째 열에 출력합니다.
# comm -1 comm1 comm2
2
3
6
7
7
8
9
-2 옵션을 사용해서 comm1을 기준으로 첫 번째 열에 comm2와 다른 부분을 출력하고, 2번째 열에 같은 내용을 출력합니다.
# 채ㅡㅡ -2 채ㅡㅡ1 채ㅡㅡ2
1
3
5
6
7
7
-12 옵션을 이용하여 comm1과 comm2의 공통된 내용을 출력합니다. 여기에 uniq 명령어로 열에 중보되는 내용을 삭제하고, comm3에 저장하고 확인합니다.
# comm -12 comm1 comm2
6
7
7
# comm -12 comm1 comm2 | uniq > comm3
# cat comm3
6
7
9. csplit(파일 분할) |
1) 경로 : /usr/bin/csplit
2) 요약 : 지정하는 기준을 바탕으로 파일늘 나눔
3) 사용 방법 : csplit [옵션[... 파일 인자...
4) 옵션
- : 표준 입력으로투버 입려을 받음
-b suffix, --suffix-format=suffix : 새롭게 생성되는 파일의 접미사를 지정. 보통 파일은 00으로 시작해서 99까지 생성됨. 다음과 같이 형식을 지정할 수 있음
§ %d, %i : 부호 있는 10진수
§ %u : 부호 없는 10진수
§ %o : 8진수
§ %x, %X : 16진수
-f prefix, --prefix=prefix : 새롭게 생성되는 파일의 접두사를 지정할 수 있음. prefix00에서 prefix99까지 중 prefix 부분을 지정하는 것임
-k, --keep-files : 생성 도중 에러가 발생하여도 새롭게 생성된 파일들을 유지
-n, --digits=num : 생성되는 파일의 길이를 지정. 기본값은 두 자리
-s, --quiet, --silent : 문자 개수를 출력하지 않음
-z, --elide-empty-files : 빈 파일을 제거
--help : 사용법 출력
--versioin : 버전 정보 출력
5) 추가 설명
csplit은 파일의 내용에서 지정하는 기준으로 파일을 여러 개로 나눕니다 아래에 csplit 명령어의 인수인 파일명 다음에 올 수 있는 인자를 설명하였습니다. 이 인자는 파일을 나누는 기준이 됩니다.
§ n : 현재 라인부터 n번째 라인까지의 범위를 새로운 파일로 생성
§ 정규 표현식/[+n/-n] : 현재 라인부터 정규 표현식을 포함하는 라인까지 파일을 생성. +n이면 정규 표현식을 기준으로 n번째 줄까지 더 포함하며, -n이면 정규 표현식을 기준으로 n번째 줄까지를 제외하게 됨
§ %정규 표현식%/[+n/-n] : 정규 표현식의 라인 앞 부분은 저장되지 않음
§ {n} : n번 반복
§ {*} : 입력이 있을 때까지 반복
예제를 통해 알아봅시다. 다음의 song.txt 파일은 노래 가사를 저장해 놓은 것입니다. 이 노래를 단락별로 나누어 파일로 저장해 보겠습니다.
# cat song.txt
song.1
어린 시절 우리 고왔던
시간 저 편의 추억들은
song.2
늘 행복하기를 모두 바라고 있어
수많은 축복에 미소 짓는
아름다운 내사랑
song.3
부드러운 손길 달콤한 속삭임
내가 원한 것은 그것만은 아니었지
이 파일을 각 단락 별로 나누어 보겠습니다.
# csplit song.txt %song.1% /song.2/ /song.3/
156
176
158
csplit 명령으로 xx00, xx01, xx02 파일이 생성되었습니다.
# cat xx00
song.1
어린 시절 우리 고왔던
시간 저 편의 추억들은
# cat xx01
song.2
늘 행복하기를 모두 바라고 있어
수많은 축복에 미소 짓는
아름다운 내사랑
# cat xx02
song.3
부드러운 손길 달콤한 속삭임
내가 원한 것은 그것만은 아니었지
10. cut(필드 골라 보기) |
1) 경로 : /bin/cut
2) 요약 : 파일에서 원하는 필드르 뽑아냄
3) 사용 방법 : cut [옵션]... [파일]...
4) 옵션
-b, --bytes=LIST : 바이트 단위로 나타냄
-c, --characters=LIST : 문자 단위로 나타냄
-d, --delimiter=DELIM : 기본 필드 구분자는 탭이지만 이를 사용하지 않고 지정하는 필드 구분자를 사용
-f, --fields=LIST : 지정한 필드만을 출력
-s, --only-delimited : 필드 구분자에 포함되지 않는 행은 출력하지 않음
--output-delimiter=STRING : 출력되는 필드 구분자(STRING)를 지정
--help : 사용법 출력
--version : 버전 정보 출력
5) 추가 설명
cut 명령어는 awk에서 print $N과 비슷하지만, awk보다 더 간단하게 사용할 수 있습니다. -b, -c, -f 옵션에서는 다음과 같이 특정 숫자 범위를 사용할 수 있습니다.
§ N : N번째
§ N- : N번째부터 마지막까지의 범위
§ N-M : N번째부터 M번째까지의 범위
§ -N : 첫 번째부터 N번째까지의 범위
uname -a 명령으로 보여지는 시스템 정보에서 cut 명령을 이용하여 OS와 커널 버전만 보이게 할 수 있습니다. 유의할 점은 -d 옵션은 구분자를 공백으로 둔다는 의미이므로, 따옴표(')와 따옴표 사이는 공백으로 띄워야 구분할 수 있습니다. 또한 따옴표 대신 쌍따옴표(")로 묶을 수도 있습니다.
# uname -a
Linuxuser-desktop 2.6.31-20-generic #58-Ubuntu SMP Mar 31 16:50:58 UTC 2020 i686 GNU/Linux
# uname -a | cut ?d ' ' -f1,3
Linux 2.6.31-20-generic
-f1,3은 공백으로 구분자를 두어 첫 번째와 세 번째 필드만 뽑아서 본다는 의미입니다.
만일 -f3- 이라면 세 번째 필드부터 마지막까지 본다는 의미이고, -f-3은 첫 번째부터 세 번째 필드까지, -f1-3은 첫 번째, 두 번째, 세 번째 필드만 본다는 의미입니다.
/etc/mtab 파일의 내용 중 마운트 된 파일 시스템의 목록만 뽑아서 살펴 볼 수도 있습니다.
# cat /etc/mtab | cut -d" " -f1,2
/dev/sda1 /
proc /proc
none /sys
none /sys/fs/fuse/connections
none /sys/kernel/debug
none /sys/kernel/security
udev /dev
none /dev/pts
none /dev/shm
none /var/run
none /var/lock
none /lib/init/rw
/dev/sda4 /build
'IT 이야기 > Linux 명령어' 카테고리의 다른 글
[RHEL6] 파일 조작 명령어 4탄(paste, pr, rev, sdiff, sort) (0) | 2020.04.02 |
---|---|
[RHEL6] 파일 조작 명령어 3탄(expand, hexdump, join, look, nl) (0) | 2020.03.31 |
[RHEL6] 파일 조작 명령어 1탄(a2p, awk, cmp, col, colcrt) (0) | 2020.03.31 |
[RHEL6] 파일 보기 명령어 3탄(pathchk, size, sum, tail, tailf) (0) | 2020.03.27 |
[RHEL6] 파일 보기 명령어 2탄(ispell, less, lsattr, more, namei) (0) | 2020.03.27 |
댓글