리눅스에서 쉘 스크립트를 작성할 때, 파일 사이즈 같은 숫자 데이터를 다루는 경우가 많다. 이 때, 숫자의 자리수가 많으면 가독성이 매우 떨어진다.
예를 들어 13631488 바이트라고 하면 정확히 어느정도의 양인지 딱 와닿지 않는다. 13MB라고 단위를 뒤쪽에 써줘야 숫자에 대한 감이 온다.
numfmt 명령어
numfmt 명령어는 숫자를 사람이 읽을 수 있는 문자 형태로 변환해주는 명령어다.
numfmt [OPTION] ... [NUMBER]
1MB 같은 문자가 몇 바이트인지 숫자로 풀어서 출력해주거나 1048567 바이트가 몇 MB인지 해석해서 출력해주는 기능을 제공한다.
예를 들어
$ numfmt --from=si 1M # 1M를 si 단위로 풀어서 출력
1000000
$ numfmt --from=iec 1M # 1M를 iec 단위로 풀어서 출력
1048576
$ numfmt --to=si 1000000 # 숫자를 단위를 붙인 문자로 변환 출력
1.0M
$ numfmt --to=iec 1048576 # 숫자를 단위를 붙인 문자로 변환 출력
1.0M
numfmt 명령어 옵션
옵션 | 설명 |
--debug | 잘못된 입력에 대해서 경고메시지 출력 |
-d, --delimiter=X | 공백문자 대신 X문자를 구분자(delimiter)로 사용 |
--field=FIELDS | 입력받은 필드 중에서 몇 번째 필드에 숫자 변환을 적용할 것인지 |
--format=FORMAT | printf 스타일의 부동소수점 포맷을 출력 |
--from=UNIT | 입력받는 문자의 단위를 지정 |
--from-unit=N | 입력 유닛 사이즈를 지정 |
--grouping | 1,000,000 처럼 숫자의 자리수를 그루핑 |
--header=N | 입력받는 첫 N 라인은 헤더로 취급해서 숫자 포맷 변환을 하지 않음 |
--invalid=MODE | 잘 못된 형태의 입력을 받았을 때, 어떻게 동작할지 지정 (abort, fail, warn, ignore) |
--padding=N | N 바이트 패딩을 지정 |
--round=METHOD | 반올림 방법을 지정 (up, down, from-zero, towards-zero, nearest) |
--suffix=SUFFIX | 출력되는 숫자에 SUFFIX 추가 |
--to=UNIT | 어떤 형태의 문자열로 변환할 것인지 지정 |
--to-unit=N | 출력 유닛 사이즈를 지정 |
-z, --zero-terminated | 새로운 라인에 쓰지 않음 |
--help | 명령어 도움말 출력 |
--version | 버전 정보출력 |
--from과 --to 옵션에 사용할 수 있는 UNIT 값은 다음과 같다.
UNIT 옵션 | 설명 | 예 |
auto | 한 단어 혹은 두 단어의 단위를 사용 | 1K = 1000, 1Ki = 1024, 1M = 1000000, 1Mi = 1048576 |
si | 한 단어 단위를 사용 | 1K = 1000, 1M = 1000000, ... |
iec | 한 단어 단위를 사용 | 1K = 1024, 1M = 1048576, ... |
iec-i | 두 단어 단위를 사용 | 1Ki = 1024, 1Mi = 1048576, ... |
관련글
댓글