2016-11-09 3 views
-1

Ich versuche, alle Einträge eingegeben zwischen 15.00 bis 15.45 Uhr am 9. November mit folgendem Befehl ein, um zu sehen:Wie Daten zwischen zweimal zeigen grep Befehl

grep -E "Nov 9 15:00|Nov 9 15:45" /mac1/user1log 

Aber diese aus nicht zeigen 15.00 bis 15.45 Uhr, aber nur 15.00 Uhr und 15.45

ich weiß awk ist besser, aber ich brauche diese aus einem bash-Skript ausführen und awk kann von bash-Skript nicht ausgeführt!

+2

Was lässt Sie denken, dass 'awk' nicht von einem Bash-Skript ausgeführt werden kann? – RJHunter

+1

Ist die Datei nach Datum oder nur zufälligen Zeilen sortiert? Können Sie Beispieleingabe und gewünschte Ausgabe geben? – dawg

+0

@RJHunter, weil ich versucht habe, es vom Bash-Skript auszuführen, aber es lief nicht und ich bin nicht sehr vertraut mit 'awk'. –

Antwort

0

Um zu erreichen, was Sie mit grep versuchen (genauer gesagt, die Option extended-regexp), müssen Sie einen regulären Ausdruck bereitstellen. Reguläre Ausdrücke sind etwas begrenzt, aber ich habe eine einfache Antwort für dieses spezielle Szenario gefunden.

bash>grep -E "Nov 9 15:[0123][0-9]|Nov 9 15:[4][0-5]" testFile 

Der Inhalt testfile ist die folgende:

Nov 9 15:02 
Nov 9 15:01 
Nov 9 15:09 
Nov 9 15:39 
Nov 9 15:49 
Nov 9 15:59 

Dies sollte aber für das Szenario Sie präsentierten gut funktionieren.

bash>grep -E "Nov 9 15:[0123][0-9]|Nov 9 15:[4][0-5]" testFile 
Nov 9 15:02 
Nov 9 15:01 
Nov 9 15:09 
Nov 9 15:39 

Der erste Teil des Ausdrucks übereinstimmt etwas vom 9. Nov 15.00 Uhr bis 15.39 Uhr und der zweite Abschnitt übereinstimmt etwas von November 9 von 15.40 bis 15.45 Uhr.

Edit: Die Syntax Teil davon ist nur Standard, numerische Ausdruck Bereiche. [0123] [0-9] Bedeutet, dass alles mit 0, 1, 2 oder 3 gefolgt von einer anderen Ziffer von 0-9 (01, 02, 03, 39 usw.) übereinstimmt, während [4] [0-5 ] entspricht 4, gefolgt von einer Ziffer von 0 bis 5.

+0

Vielen Dank! Das funktioniert, können Sie bitte erklären die Syntax, so weiß ich, wie es funktioniert? –

+0

Ich habe die Antwort bearbeitet, um eine kurze Erklärung zu enthalten. Kann ich empfehlen, auf http://www.regular-expressions.info/quickstart.html zu lesen? –

+0

kann vereinfacht werden 'grep -E 'Nov 9 15: ([0-3] [0-9] | [4] [0-5])' ' – Sundeep