잘못 정렬된 AWK 출력

잘못 정렬된 AWK 출력

출력을 생성한 다음 이메일을 보내는 간단한 awk 명령이 있습니다.

awk '(NR==FNR){a[$2]=sprintf("%.2f",$1*value); next} {print $1,$2,a[$2]}' OFS="\t\t\t" value=$COST /tmp/1.txt /tmp/2.txt

그러나 마지막 열은 두 번째 열을 기준으로 잘못 정렬되었습니다.

510G                    /path/to/aaaaaaaaaaaaa/                 0.00
157G                    /path/to/bbbbbbbbb/                     0.00
253M                    /path/to/ccccccccccccccc/                        0.00
61M                     /path/to/dddddddd/                      0.00
16K                     /path/to/eeeee/                 0.00
8.0K                    /path/to/fffffffff/                     0.00

이것이 항상 정렬되도록 하려면 어떻게 해야 합니까? /path/to정적입니다.

답변1

명령 출력을 파이프로 연결하여 column -t출력 형식을 열로 지정할 수 있습니다. 입력은 공백으로 구분되어야 하므로 추가해야 하는 탭 수를 추측할 필요가 없습니다.

예를 들어 파일에 다음이 포함되어 있다고 가정합니다.

510G        /path/to/aaaaaaaaaaaaa/          0.00
157G                /path/to/bbbbbbbbb/                 0.00
253M           /path/to/ccccccccccccccc/                  0.00
61M                  /path/to/dddddddd/               0.00
16K                  /path/to/eeeee/             0.00
8.0K                /path/to/fffffffff/              0.00

cat the.file|column -t명령은 다음 출력을 생성합니다.

510G  /path/to/aaaaaaaaaaaaa/    0.00
157G  /path/to/bbbbbbbbb/        0.00
253M  /path/to/ccccccccccccccc/  0.00
61M   /path/to/dddddddd/         0.00
16K   /path/to/eeeee/            0.00
8.0K  /path/to/fffffffff/        0.00

관련 정보