jsum
사용법
jsum -H [-G fn] [-h][-1] [-S skiplist][-d delimiter][-f [-v]][-i][-z][-c][-s sep][-,][-U unit][-u num] [file]
jsum -G fn [-h][-1] [-S skiplist][-d delimiter][-f [-v]][-i][-z][-c][-s sep][-,][-U unit][-u num] [file]
jsum -p -G fn [-S skiplist][-d delimiter][-s sep][-,][-U unit][-u num] [file]
jsum -l [-G fn] [-H][-h] [-S skiplist][-d delimiter][-f [-v]][-i][-z][-c][-s sep][-,][-U unit][-u num] [file]
jsum -L fn [-K keyfield] [-H][-h] [-S skiplist][-d delimiter][-f [-v]][-i][-z][-c][-s sep][-,][-U unit][-u num] [file]
jsum -V
Options are as follows:
-? print this help
-, put commas between every three digits in decimal numbers
-1 print result data line by line
-c accept comma separated value: ex) 12,000,0000
-d delimiter input field delimiter; def: whitespace
-f force to calculate unconditionally ignoring invalid number
-G fn[,fn,...] sum is calculated by columns; select field; exam) 1,2 ...
-H data file has header information
-h print column names, or line number if -l option used
-i regard input as integer value
-K keyfield specify key field number for -L option; def: 1
-l calculate sum line by line
-L fn calculate sum line by line with the same column name
-p print specified column data itself, not calculating
-S skiplist list starting word to skip (separated by comma)
-s sep output separater (default: TAB)
-U unit change the unit of output value: 'K' for kilobyte, 'M' for Megabyte, 'G' for Gigabyte
-u num specify the number of decimal places; num should be one of 1, 2 and 3; (default: 2)
-v verbose mode; print NOTE message for invalid input with -f option
-V show version
-z do not print zero value
file data file; If file is omitted, the standard input is used.
설명
jsum 명령어는 지정한 파일이나 표준입력에서 데이타를 읽어서 지정한 컬럼 별 또는 라인 별로
합계를 구해준다. file을 지정하지 않으면 표준입력을 사용한다.
# cat bin.dat
-r-xr-xr-x 1 bin bin 10492 Oct 6 1998 /usr/bin/keylogin
-r-xr-xr-x 1 bin bin 5412 Oct 6 1998 /usr/bin/keylogout
-r-xr-xr-x 1 bin bin 7068 Oct 6 1998 /usr/bin/kinit
-r-xr-xr-x 1 bin bin 8376 Oct 6 1998 /usr/bin/klist
# jsum -G 5 bin.dat
31348
# jsum -G 2,5 bin.dat
4 31348
|
위의 예제에 있는 bin.dat 파일은 "ls -l" 명령어의 결과를 가지고 있다. 여기서 첫번째 예제는
5번째 필드의 값을 더하여 합계를 보여준다. 두번째 예제는 2번째 필드와 5번째 필드의
합계를 동시에 보여주는 예제이다.
계산하고 싶은 컬럼번호를 -G 옵션에 지정한다. 여러개를 동시에 보고 싶으면 콤마로 구분하여
여러 컬럼번호를 지정할 수 있다.
입력되는 컬럼의 구분은 white space(TAB 또는 SPACE)로 구분한다. 구분자를 다른 것으로
사용하고 싶으면 -d 옵션을 사용하여 컬럼 구분자를 지정할 수 있다.
다음은 라인 별로 합계를 구하는 예제이다. -l 옵션을 사용하면 각각의 라인에 있는
숫자를 모두 더하여 라인 별로 합계를 출력한다.
# cat exam.dat
120 10 29 10.001
99 89 12.1 10.02
20 20 10 10
20 20 20 20
# jsum -l exam.dat
169.001
210.12
60
80
# jsum -l -i exam.dat
169
210
60
80
# jsum -l -G 2,3 exam.dat2
39
101.1
30
40
|
합계를 구하는데 사용되는 데이타는 양수이어야 하고 반드시 숫자로 시작하여야 한다.
숫자가 아닐 경우에 오류가 발생한다.
숫자와 문자가 섞여 있을 때, 문자는 숫자의 끝으로 인식한다.
음수는 숫자로 인식하지 않는다.
-G 2,3 옵션을 지정하여 두번째와 세번째 데이타만 더하여 합계를 출력한다.
숫자는 64 bit로 계산한다. 따라서 최대값은 2^64(18446744073709551616) 이다.
이 보다 값이 커지게 되면 부정확한 값이 나온다.
소수점 이하의 숫자가 있을 경우, 소수점 이하 9 자리까지만 숫자로 인식한다.
소수점 이하를 계산하지 않으려면, -i 옵션을 사용하면 된다.
# cat psinfo.dat
Date.time 0312.21:54:37 proc 69 zomb 0 run 0 lwp 151 cpu 5.44% load1m 0.07 ptime 12380.73 hp+stk 67.35M
PID USERNAME HP+STK S NLWP WCPU% CPU% ELAPSED TIME CMD
272 guest 14.71M S 1 2.09% 2.09% 0d9430 02:10.63 Xsun
722 guest 20.82M S 1 1.29% 1.29% 0d6194 01:35.28 netscape
1808 guest 0.047M S 1 0.72% 0.72% 0d1103 01.39 vi
391 guest 7.484M S 1 0.46% 0.46% 0d9360 21.02 dtterm
330 guest 10.78M S 15 0.35% 0.35% 0d9378 22.10 java
1821 root 0.117M O 1 0.29% 0.29% 0d0 00.06 psinfo
# jsum -S Date,PID -G 7 psinfo.dat
5.20
# jsum -H -G CPU% -S Da psinfo.dat
5.20
# jsum -H -G HP+STK,NLWP,CPU% -S Date psinfo.dat
53.958 20 5.20
# jsum -H -h -G HP+STK,NLWP,CPU% -S Date psinfo.dat
HP+STK NLWP CPU%
53.958 20 5.20
# jsum -H -1 -h -G HP+STK,NLWP,CPU% -S Date psinfo.dat
HP+STK 53.958
NLWP 20
CPU% 5.20
|
-S 옵션을 사용하면 합계를 구하는 데이타에서 제외하고 싶은 라인을 지정할 수 있다.
제외하고 싶은 라인의 시작하는 단어를 지정하면 된다(단어의 일부만 지정해도 된다).
여러 개를 지정할 경우 콤마(,)로 구분할 수 있다.
-S Date,PID에서는 Date로 시작하는 라인과 PID로 시작하는 라인은 제외한다.
-S Date 만 지정하고 -H 옵션을 지정하면 유효한 첫번째 라인은 헤더정보로 사용되고,
이것은 -G 옵션에 사용될 수 있다.
-h 옵션을 지정하면 출력되는 값의 헤더 정보를 보여준다.
첫번째 줄에서는 헤더 정보가 출력되고 그 다음 줄에 합계 값이 출력된다.
-1 옵션을 지정하면, 열별로 출력한다.
# cat test.dat
Jun host_a 13000
Feb host_a 14000
Mar host_a 15000
Jun host_b 1600
Feb host_b 2700
Mar host_b 1200
Jun host_c 900
Feb host_c 800
Mar host_c 700
# jsum -L 3 test.dat
Jun 15500
Feb 17500
Mar 16900
# jsum -L 3 -K 2 test.dat
host_a 42000
host_b 5500
host_c 2400
|
위의 예제에는 test.dat 파일을 사용하여 -L 옵션을 사용한 예제이다.
-L 옵션이 사용되면 같은 이름을 가진 필드의 값을 합하여 출력한다.
-L 옵션으로 합계를 구할 필드를 지정하고 -K 옵션으로 같은 이름을 가지는 필드를 지정한다.
-K 옵션이 지정되지 않으면 첫번째 컬럼이 디폴트로 사용된다.
다음은 jsum 명령어의 옵션이다.
옵션 | 설명 |
-1 |
-1 옵션을 지정하면 여러 컬럼을 출력할 때, 각 컬럼의 데이타를 한 라인씩 출력한다.
|
-, |
-, 옵션을 지정하면, 출력 값에 콤마(,) 표시를 함께 표시한다.
# echo 123456789 | jsum -l
123456789
# echo 123456789 | jsum -l -,
123,456,789
|
|
-c |
-c 옵션을 지정하면, 숫자 중간에 있는 콤마를 모두 무시하고 연속된 숫자로 인식한다.
-c 옵션을 지정하지 않으면, 콤마는 숫자의 끝으로 인식한다.
# echo 10,000 20,001 | jsum -l
30
# echo 10,000 20,001 | jsum -l -c
30001
|
|
-d delimiter |
-d 옵션은 입력 데이타의 구분자를 지정한다. 이 옵션을 지정하지 않으면 white space(TAB or SPACE)
를 구분자로 사용한다. "-d ," 를 지정하면 입력 데이타의 구분자로 콤마를 사용한다.
delimiter는 문자 한개가 사용된다.
|
-f [-v] |
-f 옵션을 지정하면, 입력 데이타의 필드의 개수가 -G 옵션에 지정한 값보다 적거나,
데이타가 숫자가 아닌 문가가 오더라도 오류 메세지를 출력하지
않고 0으로 간주하여 계산을 진행한다.
# ls -l
total 624
-rw------- 1 guest other 302660 Oct 3 17:02 dtdbcache_:0
-rw-rw-r-- 1 root sys 1384 Oct 3 13:37 ps_data
-rw-r--r-- 1 guest other 0 Oct 3 17:02 sdtvolcheck431
-rw-r--r-- 1 guest other 48 Oct 3 17:02 test
# ls -l | jsum -G 5
ERROR: Line=1: too few columns: 'total ...'
# ls -l | jsum -f -G 5
304092
# ls -l | jsum -f -G 4
0
|
|
-G fn[,fn,...] |
-G 옵션을 지정하면 컬럼 별로 합계를 구한다. 합계를 구하고 싶은 컬럼 번호를 콤마로 구분하여
지정할 수 있다.
입력 데이타 라인의 컬럼 수가 -G 옵션에 지정한 컬럼 번호보다 적으면 오류가 발생한다.
-H 옵션이 지정되어 있을 경우, -G 에 컬럼 번호대신에 컬럼명을 지정할 수 있다.
# cat exam.dat
120 10 29 10
99 89 12 10
20 20 10 10
20 20 20 20
# jsum -G 1 exam.dat
259
# jsum -G 1,2,3 exam.dat
259 139 71
|
|
-h |
-h 옵션을 지정하면 컬럼명 또는 라인번호(-l 옵션 사용시)를 출력한다.
|
-H |
-H 옵션을 지정하면 입력되는 유효한 첫번째 데이타가 컬럼명으로 인식한다.
이 컬럼명은 -G 옵션에 컬럼번호 대신에 사용될 수 있다.
헤더 정보에는 있는 각각의 필드명은 숫자로 시작하면 오류가 발생한다.
그러나 JS Parm V10.4 부터는 헤더 라인의 마지막 컬럼에 다음과 같은 시간 표시가 있는 것 경우,
오류를 발생하지 않고, 무시한다. 즉, 시간 표시가 없는 것과 같이 처리한다.
mmdd.HH:MM:SS
HH:MM:SS
|
-i |
-i 옵션을 지정하면 입력되는 데이타에서 소수점 이하의 값은 무시한다.
|
-l |
-l 옵션을 사용하면 각각의 라인에 있는 숫자를 모두 더하여 라인 별로 합계를 출력한다.
|
-L fn [-K keyfield] |
-L 옵션은 -K 옵션과 함께 사용되며, -K 옵션에 지정된 컬럼의 이름이 같은 것끼리 모아서
-L 옵션에 지정된 컬럼의 값의 합계를 출력한다.
-K 옵션이 지정되지 않으면 디폴트로 첫번째 컬럼이 사용된다.
|
-p |
-p 옵션을 사용하면 -G 옵션에서 지정한 컬럼의 데이타를 그대로 출력한다.
즉, 그 컬럼의 데이타를 뽑아낸다.
|
-S skiplist |
-S 옵션을 사용하면 합계를 구하는 데이타에서 제외하고 싶은 라인을 지정할 수 있다.
제외하고 싶은 라인의 시작하는 단어를 지정하면 된다 (단어의 시작부터 일부만 지정해도 된다).
여러 개를 지정할 경우 콤마(,)로 구분할 수 있다.
|
-s sep |
-s 옵션을 지정하면 출력되는 데이타의 구분자 지정할 수 있다.
이 옵션을 지정하지 않으면 탭(TAB)을 출력 구분자로 사용한다.
|
-U unit -u num |
-U 옵션에 지정할 수 있는 unit은 'k' 또는 'm' 또는 'g' 이다. 대소문자 구별 없이 사용할 수 있다.
'k'를 지정하면 출력되는 숫자를 1024로 나누어 KB 단위로 표시한다.
'm'를 지정하면 출력되는 숫자를 1024 * 1024로 나누어 MB 단위로 표시한다.
'g'를 지정하면 출력되는 숫자를 1024 * 1024 * 1024로 나누어 GB 단위로 표시한다.
어렇게 출력되는 숫자를 KB, MB, GB로 표시할 때, 디폴트로 소수점 2 자리까지 표시한다.
-u 1 옵션을 지정하면, 소수점 첫째 자리까지 표시하고, -u 3 옵션을 지젛하면, 수점 세째 자리까지 표시한다.
|
-v |
-v 옵션은 -f 옵션과 함께 사용하여 숫자가 아닌 데이타가 있을 경우, 그 내용을 출력한다.
|
-V |
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
-z |
-z 옵션을 지정하면 합계 값이 0(zero)인 것을 출력하지 않는다.
|
|