Hinzufügen führenden Nullen awk-variable
Habe ich das folgende awk-Befehl innerhalb einer "for" - Schleife in der bash:
awk -v pdb="$pdb" 'BEGIN {file = 1; filename = pdb"_" file ".pdb"}
/ENDMDL/{getline; file ++; filename = pdb"_" file ".pdb"}
{print $0 > filename}' < ${pdb}.pdb
Dieser liest eine Reihe von Dateien mit den Namen $pdb.pdb und teilt Sie in Dateien mit dem Namen $pdb_1.pdb $pdb_2.pdb, ..., $pdb_21.pdb, etc. Allerdings würde ich gerne die Erstellung von Dateien mit Namen wie $pdb_01.pdb $pdb_02.pdb, ..., $pdb_21.pdb, d.h., für "padding" Nullen "Datei" - variable.
Ich habe versucht ohne Erfolg mit printf in unterschiedlicher Weise. Hilfe wäre sehr geschätzt werden.
InformationsquelleAutor der Frage mirix | 2011-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen
file
auf Ausgang mitsprintf("%02d", file)
.Oder sogar die ganze assigment mit
filename = sprintf("%s_%02d.pdb", pdb, file);
.InformationsquelleAutor der Antwort glglgl
So erstellen Sie die führenden Nullen mit
awk
:Ersetzen
%02
mit der Anzahl der Ziffern, die Sie benötigen (einschließlich Nullen) ein.InformationsquelleAutor der Antwort JJ.
Hier ist eine Funktion, die Links-oder rechts-pads Werte mit null-Werten in Abhängigkeit der Parameter: zeropad(Wert, Anzahl, Richtung)
Einige tests:
Test:
Es ist nicht vollständig battlefield getestet, so seltsame Parameter führen kann seltsame Ergebnisse.
InformationsquelleAutor der Antwort James Brown