GREP mit größer als benutzen
Moin zusammen,
ich habe eine Liste mit Uhrzeiten. (Liste unten)
Mit
ziehe ich mir alle Busfahrten raus, die der aktuellen Stunde entsprechen + 3 die danach kommen. Könnt ihr mir helfen noch zu filtern, dass ich genau die Fahrten habe, die nach der aktuellen Minuten kommen? Also sowas wie grep "greater than" $(date +%H:%M)?
Ansonsten könnte vielleicht man auch direkt filtern mit "greater than" $(date +%H:%M) und dann head 5, sodass die nächsten 5 Busfahrten angezeigt werden.
Hat jemand nen Tipp?
Vielen Dank vorab.
Jens
ich habe eine Liste mit Uhrzeiten. (Liste unten)
Mit
cat /skripte/mobilitaet/hvv/6/plan.txt | grep -A 3 $(date +%H:) > /skripte/mobilitaet/hvv/6/abfahrten1.txt
Ansonsten könnte vielleicht man auch direkt filtern mit "greater than" $(date +%H:%M) und dann head 5, sodass die nächsten 5 Busfahrten angezeigt werden.
Hat jemand nen Tipp?
Vielen Dank vorab.
Jens
00:04
00:09
00:24
00:29
00:49
01:09
04:25
04:45
04:49
05:05
05:09
05:15
05:25
05:29
05:35
05:45
05:49
05:55
05:56
06:05
06:06
06:16
06:16
06:26
06:26
06:31
06:36
06:36
06:41
06:46
06:46
06:51
06:56
06:56
07:01
07:06
07:06
07:11
07:16
07:16
07:21
07:26
07:26
07:31
07:34
07:36
07:40
07:41
07:43
07:46
07:49
07:50
07:53
07:56
07:56
08:00
08:01
08:03
08:06
08:06
08:11
08:11
08:14
08:16
08:17
08:20
08:21
08:24
08:25
08:27
08:29
08:31
08:34
08:35
08:37
08:40
08:41
08:44
08:45
08:47
08:51
08:52
08:54
08:57
09:00
09:01
09:04
09:07
09:07
09:11
09:14
09:15
09:17
09:21
09:22
09:24
09:27
09:30
09:32
09:37
09:37
09:42
09:45
09:47
09:52
09:52
09:57
10:00
10:02
10:07
10:09
10:15
10:17
10:22
10:24
10:30
10:32
10:37
10:39
10:45
10:47
10:52
10:54
11:00
11:02
11:07
11:09
11:15
11:17
11:22
11:24
11:30
11:32
11:37
11:39
11:45
11:47
11:52
11:54
12:00
12:02
12:07
12:09
12:15
12:17
12:22
12:24
12:30
12:32
12:37
12:39
12:45
12:47
12:52
12:54
12:59
13:00
13:04
13:07
13:09
13:14
13:15
13:19
13:22
13:24
13:29
13:30
13:34
13:37
13:39
13:45
13:47
13:52
13:54
14:00
14:02
14:07
14:09
14:15
14:17
14:20
14:24
14:25
14:30
14:32
14:35
14:39
14:40
14:45
14:48
14:50
14:55
14:55
14:59
15:03
15:04
15:09
15:10
15:14
15:18
15:18
15:21
15:24
15:25
15:28
15:31
15:33
15:34
15:38
15:40
15:41
15:44
15:48
15:48
15:51
15:53
15:54
15:58
15:58
16:01
16:03
16:04
16:08
16:08
16:11
16:13
16:14
16:18
16:18
16:21
16:23
16:24
16:28
16:28
16:31
16:33
16:34
16:38
16:38
16:41
16:43
16:44
16:48
16:48
16:51
16:53
16:54
16:58
16:58
17:01
17:03
17:04
17:08
17:08
17:11
17:13
17:14
17:18
17:18
17:21
17:23
17:24
17:28
17:28
17:31
17:33
17:34
17:38
17:38
17:41
17:43
17:44
17:48
17:48
17:51
17:53
17:54
17:58
17:58
18:01
18:03
18:04
18:08
18:08
18:11
18:13
18:14
18:18
18:18
18:21
18:23
18:24
18:28
18:28
18:31
18:33
18:34
18:38
18:38
18:41
18:43
18:44
18:48
18:48
18:51
18:54
18:55
18:58
19:01
19:03
19:04
19:08
19:10
19:11
19:14
19:18
19:18
19:21
19:24
19:25
19:28
19:31
19:33
19:34
19:38
19:40
19:41
19:44
19:46
19:47
19:51
19:53
19:54
19:57
20:00
20:01
20:03
20:07
20:08
20:10
20:13
20:15
20:17
20:20
20:23
20:25
20:27
20:30
20:33
20:35
20:38
20:43
20:45
20:48
20:53
20:55
20:58
21:03
21:05
21:08
21:13
21:15
21:18
21:23
21:25
21:28
21:35
21:38
21:45
21:48
21:55
21:58
22:05
22:08
22:14
22:19
22:24
22:29
22:34
22:39
22:44
22:49
22:54
22:59
23:04
23:09
23:19
23:24
23:29
23:44
23:49
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 297259
Url: https://administrator.de/contentid/297259
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Jens,
ich würde das besser mit awk machen und die Zeit korrekt umwandeln und vergleichen:
oder auch so wenn man die Anzahl der Zeilen nicht mit AWK festlegen will sondern mit head.
Grüße Uwe
p.s die Zeitenliste kürzt du besser hier im Thread, es kann sich ja jeder denken wie sich die Liste fortsetzt. Dann braucht man nicht so weit scrollen.
ich würde das besser mit awk machen und die Zeit korrekt umwandeln und vergleichen:
awk -F':' '{if(mktime(strftime("%Y %m %d "$1" "$2" 00")) > systime()){cnt+=1; if(cnt > 0 && cnt <= 5){print $0}}}' /skripte/mobilitaet/hvv/6/plan.txt
awk -F':' '{if(mktime(strftime("%Y %m %d "$1" "$2" 00")) > systime()){print $0}}' /skripte/mobilitaet/hvv/6/plan.txt | head -n 5
Grüße Uwe
p.s die Zeitenliste kürzt du besser hier im Thread, es kann sich ja jeder denken wie sich die Liste fortsetzt. Dann braucht man nicht so weit scrollen.
[OT]
Hmmm...
Wie äußert sich bei dir dieses Verstanden-Haben? *brilleputz* *nochmalBeitragNachmess*
Schönes Wochenende
Biber
[/OT]
Hmmm...
Wie äußert sich bei dir dieses Verstanden-Haben? *brilleputz* *nochmalBeitragNachmess*
Schönes Wochenende
Biber
[/OT]
Zitat von @Jens4ever:
ich versuche zusätzlich das mit PHP auszugeben. Geht aber nicht. Seite wird nicht dargestellt
Arghhh du würfelst da aber heftig die verschiedenen Anführungszeichen durcheinander ... so wird das nichts Solche Konstrukte packt man besser in ein Skript und führt es dann aus.ich versuche zusätzlich das mit PHP auszugeben. Geht aber nicht. Seite wird nicht dargestellt
Wenn du es unbedingt so machen willst:
exec("awk -F ':' '{if(mktime(strftime(\"%Y %m %d \"$1\" \"$2\" 00\")) > systime()){cnt+=1; if(cnt > 0 && cnt <= 5){print $0}}}' /skripte/mobilitaet/hvv/6/plan.txt",$output);
echo join("<br>",$output);
Das ist aber eine ineffektive Herangehensweise. Mach das besser direkt mit PHP das ist viel zielstrebiger als hier ein unsicheres Shell-Skript für eine solche Aufgaben zu bemühen
Mach es direkt mit PHP...ist cleaner und spart einen potentiell unsicheren exec
Ausreichende Zugfriffsrechte des Web-Daemons auf den Pfad muss natürlich gegeben sein.
Ebenso schönes Wochenende
Grüße Uwe
// Datei in Array laden
$arrTimes = file('/skripte/mobilitaet/hvv/6/plan.txt');
// Callback-Function zum filtern des Arrays
function filterTimes($t){return (strtotime($t) > time());}
// Array filtern, auf 5 Einträge begrenzen und Elemente durch einen Zeilenumbruch verbinden
$result = join("<br>",array_slice(array_filter($arrTimes,"filterTimes"),0,5));
// Ausgabe
echo $result;
Ebenso schönes Wochenende
Grüße Uwe