我有簡單的 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