Ich habe einen einfachen Awk-Befehl, der eine Ausgabe generiert und dann eine E-Mail sendet:
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
Allerdings ist die letzte Spalte im Vergleich zur zweiten falsch ausgerichtet:
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
Wie kann ich erzwingen, dass dies immer ausgerichtet ist? /path/to
ist statisch.
Antwort1
Sie können die Ausgabe Ihres Befehls umleiten, um column -t
jede Ausgabe in Spalten zu formatieren. Die Eingabe muss durch Leerzeichen getrennt sein, sodass Sie nicht raten müssen, wie viele Tabulatoren Sie hinzufügen müssen.
Angenommen, eine Datei enthält Folgendes:
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
der cat the.file|column -t
Befehl erzeugt diese Ausgabe:
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