У меня есть простая команда 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