Betrachten Sie die markierten Teile in Ihrer Eingabezeichenfolge und das Muster:
# Equ_time = 959240309.430000 (26-May-2015 07:38:29)
^^^
.\([0-9]*.[A-Z]*.[0-9]*.[0-9]*.[0-9]*.[0-9]*\)
^^^^^
Die Zeichenklasse [A-Z]
nur Großbuchstaben übereinstimmen, nicht Klein diejenigen. (im C-Gebietsschema, das heißt: in anderen Gebietsschemas könnte es fast alles zusammenpassen.) So wird dieser Teil genau einmal übereinstimmen (gegen die M
), und die a
und y
werden durch die folgenden Punkte übereinstimmen. Da Sie die tatsächlichen Trennzeichen (-
und :
) nicht buchstabiert haben und [0-9]*
anstelle von [0-9]+
verwendet haben, stimmt der Rest des Musters teilweise überein.
würde ich Ihr kondensieren zu so etwas wie dieses sed, wenn Sie nicht allzu besorgt sind über das genaue Format passend:
sed -nEe 's/^# Equ_time *=[0-9. ]*\((.*)\).*/\1/p'
oder, wenn Sie möchten, den inneren Teil zu einem Zeichen abgestimmt, dann
([0-9]+-[A-Za-z]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+)
(beachten Sie, dass ich erweiterte reguläre Ausdrücke dort verwendet)
Danke, aber würden Sie mir bitte sagen, was bedeutet, dass Doppelpunkt Sie tun hinzugefügt? – gnome
Der Zeitteil Ihres Textes '07: 38: 29' enthält einen Doppelpunkt. Sie müssen Ihre Regex auch nach einem Doppelpunkt suchen. Daher wurde der Doppelpunkt im Code hinzugefügt. – gaganshera
OK, aber warum haben Sie nur einen Doppelpunkt im letzten Teil hinzugefügt, der mit dem zweiten Teil des Zeitabschnitts zusammenhängt? Warum haben Sie nicht rechtzeitig den Doppelpunkt zu den Teilen hinzugefügt, die Doppelpunkte (Trennzeichen) darstellen? – gnome