Eingang:
201103 1 /mnt/hdd/PUB/SOMETHING
201102 7 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 3 /mnt/hdd/PUB/SOMET HING
201106 1 /mnt/hdd/PUB/SOMETHI NG
Gewünschte Ausgabe:
201103 01 /mnt/hdd/PUB/SOMETHING
201102 07 /mnt/hdd/PUB/SOMETH ING
201103 11 /mnt/hdd/PUB/SO METHING
201104 03 /mnt/hdd/PUB/SOMET HING
201106 01 /mnt/hdd/PUB/SOMETHI NG
Wie kann ich eine hinzufügen, 0
wenn es nur eine Ziffer gibt, z. B. 1
im "Tag" -Teil? Ich benötige dieses Datumsformat: JJJJMM TT.
\<[0-9]\>
Konstrukt anschaue, das meiner Meinung nach für die Zuordnung der einzelnen Ziffern verantwortlich ist, aber nicht sicher ist, wie dieses Konstrukt heißt. Vielen Dank.&
In der Ersatzzeichenfolge wird der passende LHS -sed 's/\<[0-9]\>/0&/'
<>
eine Wortgrenze in der Shell-Regex-Syntax ist. Kommen Sie und denken Sie darüber nach, auch das / \ b [0-9] \ b / 0 & / von sed funktioniert. Danke euch beiden. :)<>
ist ein Merkmal der erweiterten Reguläre Ausdrücke (nicht von der Schale, die als solche) ... je nachdem , welche Version und welche Optionen Sie verwenden,sed
und dieshell
können beide entweder erweitert oder Standard regex ... Standard regex Anwendungen\<\>
Eine andere Lösung:
awk '{$2 = sprintf("%02d", $2); print}'
quelle
Hier ist eine (nicht gesetzte) Möglichkeit, bash mit erweitertem regulären Ausdruck zu verwenden .
Diese Methode ermöglicht die komplexere Verarbeitung einzelner Zeilen. (dh mehr als nur Regex-Substitutionen)
Ausgabe:
quelle
Ich würde so etwas machen:
Dies greift nach einsamen Zahlen, entfernt sie mit einer Gruppe von Leerzeichen
' ([0-9]) '
und setzt sie mit 0 und Leerzeichen wieder ein' 0\1 '
.Die
-E
Option ermöglicht moderne RegEx-Ausdrücke unter OSX (Sie müssen sie also nicht"\"
so oft verwenden).-r
Das Gleiche gilt für die von mir getesteten Linux-Systeme.quelle
quelle