메일함 크기별로 출력을 정렬해 보세요.

메일함 크기별로 출력을 정렬해 보세요.

사서함 크기의 출력 파일을 정렬해 보십시오.

[email protected], 1.35 MB
[email protected], 2.19 GB
[email protected], 0 B
[email protected], 0 B
[email protected], 1.66 MB
[email protected], 0 B
[email protected], 47.84 KB
[email protected], 1.28 MB
[email protected], 1.76 MB

포럼을 검색했지만 항상 ls출력에서 ​​파일 크기를 얻습니다. 이것은 숫자 문자열입니다.

내가 시도한 것:

sort -k 2,3 mailbox-size.csv

내 목표는 결국 "평균" 크기를 찾는 것이지만 지금은 목록을 정렬하려고 합니다.

답변1

사람이 읽을 수 있는 전통적인 문자열을 얻기 위해 값과 단위 사이의 공백을 제거하려면 다음을 사용할 수 있습니다.-h, --human-numeric-sort로고에서 sort.

awk '{print $1 " " $2 $3}' mailbox-size.csv > mailbox-size-2.csv
sort -h -k 2 mailbox-size-2.csv

[email protected], 0B
[email protected], 0B
[email protected], 0B
[email protected], 47.84KB
[email protected], 1.28MB
[email protected], 1.35MB
[email protected], 1.66MB
[email protected], 1.76MB
[email protected], 2.19GB

사용numfmt그런 다음 선택적으로 사람이 읽을 수 있는 문자열을 다시 숫자로 변환하여 추가 수학 연산을 용이하게 할 수 있습니다.

numfmt --from=iec --suffix B --field=2 < mailbox-size-2.csv | sed s/B$//

[email protected], 1415578
[email protected], 2351494595
[email protected], 0
[email protected], 0
[email protected], 1740637
[email protected], 0
[email protected], 48989
[email protected], 1342178
[email protected], 1845494

sed s/B$//명령은 후행 B바이트 접미사를 제거하고 추가 수학 연산을 용이하게 하기 위해 정수 바이트 수만 남깁니다.

관련 정보