Gibt es eine Möglichkeit, die Ausgabe eines Grep-Befehls so zu formatieren, dass die Spalten sauber ausgerichtet sind? Beispiel:
4TO/struct-2222332/coord-2222332.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58899 KJ/MOL
2E/struct-1212123/coord-1212123.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58901 KJ/MOL
OT4/struct-2222121/coord-2222121.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58904 KJ/MOL
E3/struct-1312322/coord-1312322.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58903 KJ/MOL
Ich möchte der ersten Spalte 40 Leerzeichen zuweisen und sie von links ausrichten. Machen Sie dasselbe für die anderen Spalten, basierend auf der erwarteten maximalen Größe jeder Spalte.
Antwort1
Sie können den Befehl verwenden column
(wenn Sie Linux verwenden), um die Daten in tabulatorgetrennte Spalten zu formatieren. Ich glaube jedoch nicht, dass Sie für die erste Spalte eine andere Spaltenbreite als für die anderen Spalten angeben können.
bash-[24]$ column -t /tmp/output
4TO/struct-2222332/coord-2222332.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58899 KJ/MOL
2E/struct-1212123/coord-1212123.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58901 KJ/MOL
OT4/struct-2222121/coord-2222121.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58904 KJ/MOL
E3/struct-1312322/coord-1312322.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58903 KJ/MOL
Ihre andere Möglichkeit wäre, die Dateien zu analysieren, die Felder aufzuteilen und die Spalten selbst mit awk
und zu verarbeiten printf()
.
bash-[54]$ awk '{printf "%-40s",$1 ; $1=""; printf "%-s\n",$0}' /tmp/output
4TO/struct-2222332/coord-2222332.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58899 KJ/MOL
2E/struct-1212123/coord-1212123.out: FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58901 KJ/MOL
OT4/struct-2222121/coord-2222121.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58904 KJ/MOL
E3/struct-1312322/coord-1312322.out: FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58903 KJ/MOL