Eu tenho um comando awk simples gerando saída e enviando um email:
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
no entanto, a última coluna está desalinhada com base na segunda:
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
Como posso fazer com que isso esteja sempre alinhado? /path/to
é estático.
Responder1
Você pode canalizar a saída do seu comando para column -t
formatar qualquer saída em colunas. A entrada precisa ser delimitada por espaços em branco, para que você não precise adivinhar quantas guias precisa adicionar.
Por exemplo, supondo que um arquivo contenha isto:
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
o cat the.file|column -t
comando produz esta saída:
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