Ich suche nach einer awk- oder sed-Lösung, bin aber in keinem von beiden ein Genie. Ich habe alle Vorschläge gelesen, die mir kamen, als ich mit dem Eintippen begann.
Ich habe eine Datei mit Datenzeilen:
name
thisdate=Sep 2 23:59:59 2022 GMT
name
thisdate=Sep 15 23:59:59 2022 GMT
Die Namen und Daten/Uhrzeiten sind alle unterschiedlich, die Tageszahlen stehen immer an der gleichen Stelle und nehmen immer die gleiche Anzahl Zeichen ein (2), die Stunden/Minuten/Sekunden stehen alle immer an der gleichen Position in der Zeile und es handelt sich nicht in jeder Zeile thisdate
um ein Datum in der Zukunft und es gibt keine Leerzeilen.
Ich versuche, die Zeit aus diesen Datumszeilen zu entfernen, indem ich „off“ eintippe thisdate=
(das ist ein Leerzeichen vor thisdate
) und dann die Zeichen an den Positionen 18-26 lösche (wenn ich richtig gezählt habe).
Ich habe ein paar Dinge ausprobiert, war aber hauptsächlich auf der Suche nach etwas, das meinen Bedürfnissen entspricht und mich in die richtige Richtung weist
952 sed 's/^\(.\{18\}\)\(.\{26\}\)/\1/' file <--this may not have worked as I didn't key on a match?
958 sed -i 's/thisdate=(.{11})18/\26/' file
959 sed -i 's/thisdate=(.{10})17/\25/' file
Ich bin sicher, dass ich etwas übersehe, aber ich wäre dankbar, wenn mir jemand den richtigen Weg weisen könnte!
Antwort1
Es sieht so aus, als ob es ausreichen sollte, einfach 9 Zeichen nach dem 6. Zeichen zu löschen thisdate=
:
sed 's/^\( thisdate=.\{6\}\).\{9\}/\1/' file
Für die gegebenen Daten würde dies ergeben
name
thisdate=Sep 2 2022 GMT
name
thisdate=Sep 15 2022 GMT