@eggy
python lotto.py bzq. ./lotto.py liefern keine Ergebnisse bzw. Ausgabe. Habe es auch mit python lotto.py + & Zahlen bzw. ./lotto.py + 6 Zahlen eingegeben am Terminal, keine Ausgabe .
Text aus Webseite mittels awk,sed etc. Tabelle umwandeln
Re: Text aus Webseite mittels awk,sed etc. Tabelle umwandel
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
Re: Text aus Webseite mittels awk,sed etc. Tabelle umwandel
Dir ist klar, dass deine Beispiele in Ausgangs- und Zieldatei (mit Ausnahme des 2017er) nicht real sind? Egal, solange das Format von lotto.txt stimmt und sie sich im Home-Verzeichnis des angemeldeten Benutzers befindet, sollte funktionieren:
Code: Alles auswählen
#!/bin/bash
FILE="${HOME}/lotto.txt"
HITS=3
[ $# -gt 0 ] || exit 1
SEARCH="\<$1\>"
while [ $# -gt 1 ]; do
SEARCH="${SEARCH}|\<$2\>"
shift
done
nr=0
while read line; do
nr=$((nr+1))
searchline=$(sed 's/^\([[:digit:]]\{2\}\.\)\{2\}[[:digit:]]\{4\}[[:blank:]]\+//' <<< "$line")
searchresult=$(grep -oE "$SEARCH" <<< "$searchline" | tr "\n" " ")
count=$(wc -w <<< "$searchresult")
[ "$count" -ge "$HITS" ] && echo "$nr $line Treffer: $searchresult"
done < "$FILE"
exit 0
Re: Text aus Webseite mittels awk,sed etc. Tabelle umwandel
hallo tobo.
Ich habe ja die Lottozahlen in der lotto.txt drinnen und die Datei hat das folgende Format:
Die Datei ist ja ellenlang Ich möchte bspw. 6 willkürlich von mir gewählte Lottozahlen im Terminal eingeben und das Script soll diese Zeile für Zeile in der Datei lotto.txt suchen und ab mindestens 3 Richtige aufw#rts + das zugehörige Datum der Zeile in der diese Zahlen stehen, ausgeben.
Zusätzlich könnte dieses Script noch die Zeilen durchnummerieren und in der Zieldatei es ausgeben.
Zu suchende Zahlenfolge soll z.B: sein(Eingabe):
Diese soll in der Ausgangsdatei gesucht und ab 3 Treffer aufwärts die Treffer und das zugehörige Datum mit Zellennummerierung anzeigen, etwa so:
Die Zahlen 4556, 5675 und 7766 sind die Zeilennummern.
Ich hoffe, dass das ein wenig verständlich ist.
Danke für deine Mühe.
Ich habe ja die Lottozahlen in der lotto.txt drinnen und die Datei hat das folgende Format:
Code: Alles auswählen
02.01.2016 1 23 30 35 43 47
09.01.2016 10 13 31 34 46 48
16.01.2016 9 21 23 31 34 39
23.01.2016 2 16 25 26 27 40
30.01.2016 18 23 33 34 40 48
06.02.2016 10 16 25 28 34 49
13.02.2016 18 20 30 32 43 45
20.02.2016 1 13 16 29 30 31
27.02.2016 7 10 15 25 37 49
05.03.2016 7 10 33 37 43 46
12.03.2016 20 26 30 39 47 49
19.03.2016 4 10 15 37 44 49
26.03.2016 1 3 31 33 40 41
02.04.2016 1 10 17 23 28 38
09.04.2016 1 4 38 39 46 47
16.04.2016 5 14 15 20 22 38
23.04.2016 8 15 16 17 27 35
30.04.2016 14 26 28 30 36 43
07.05.2016 16 32 34 37 42 44
14.05.2016 5 13 15 26 30 44
21.05.2016 2 5 29 46 47 48
28.05.2016 5 9 17 24 39 45
04.06.2016 5 6 22 31 35 42
11.06.2016 6 13 21 27 38 45
18.06.2016 2 8 12 17 19 27
25.06.2016 2 6 10 11 34 44
02.07.2016 4 6 8 15 26 30
09.07.2016 1 34 37 40 44 49
16.07.2016 1 18 22 30 34 44
23.07.2016 5 25 29 43 47 48
30.07.2016 6 13 23 26 30 33
06.08.2016 6 25 26 33 45 47
13.08.2016 6 14 28 30 37 39
20.08.2016 23 28 30 31 37 45
27.08.2016 1 8 22 32 33 43
03.09.2016 8 14 18 25 30 36
10.09.2016 1 3 6 11 24 43
17.09.2016 3 34 35 37 46 47
24.09.2016 4 15 18 21 32 45
01.10.2016 7 20 25 26 34 37
08.10.2016 14 21 32 33 35 48
15.10.2016 7 13 19 29 38 41
22.10.2016 2 21 26 32 36 48
29.10.2016 5 7 8 26 28 36
05.11.2016 9 32 35 38 42 43
12.11.2016 2 6 9 19 20 47
19.11.2016 1 2 6 15 38 39
26.11.2016 26 32 41 42 45 47
03.12.2016 5 16 39 43 47 48
10.12.2016 11 17 32 34 37 49
17.12.2016 6 24 28 29 34 35
24.12.2016 4 11 18 22 30 45
31.12.2016 27 29 37 42 45 47
07.01.2017 12 14 17 22 45 46
14.01.2017 3 4 23 27 28 37
21.01.2017 5 9 11 14 26 39
28.01.2017 6 9 15 38 41 42
04.02.2017 2 16 28 37 39 49
11.02.2017 3 12 22 32 45 46
Zusätzlich könnte dieses Script noch die Zeilen durchnummerieren und in der Zieldatei es ausgeben.
Zu suchende Zahlenfolge soll z.B: sein(Eingabe):
Code: Alles auswählen
6 13 15 19 21 34
Code: Alles auswählen
4556 18.02.197ß 2 6 13 14 22 34 --> Treffer:3
5675 29.05.2000 6 10 13 15 16 21 --> Treffer:4
7766 13.06.2008 6 13 15 15 21 44 --> Treffer:5
Ich hoffe, dass das ein wenig verständlich ist.
Danke für deine Mühe.
/ASUS-F751S/ Intel Pentium N3710 @ 2.560Ghz
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 35)
Linux/5.19.13-arch1-1 x86_64 GNU/Linux
WindowManager: BSPWM
Re: Text aus Webseite mittels awk,sed etc. Tabelle umwandel
Ich hatte das auch in etwa so verstanden. Teste doch einfach mal oben das Skript - die Parameter gibst du dem ausführbar gemachten Skript beim Aufruf mit:
Code: Alles auswählen
$ SCRIPT.sh 6 13 15 19 21 34
Re: Text aus Webseite mittels awk,sed etc. Tabelle umwandel
@tHoRax:
Mein Script ging davon aus, dass die Daten mit einem (nicht mehreren hintereinander) Leerzeichen getrennt sind. Wahrscheinlich hat es daher bei Dir nichts gefunden.
./lotto.py 6 13 15 19 21 34
gibt
treffer: 3 am 11.06.2016 in 11.06.2016 6 13 21 27 38 45
Mein Script ging davon aus, dass die Daten mit einem (nicht mehreren hintereinander) Leerzeichen getrennt sind. Wahrscheinlich hat es daher bei Dir nichts gefunden.
Code: Alles auswählen
#!/usr/bin/python3
import sys
import re
suchliste = []
i = 0
for zahl in sys.argv:
if (i==0):
pass
else :
suchliste.append (zahl)
i+=1
f = open('lotto.txt','r')
for line in f.readlines():
line = re.sub(" +", " ", line)
treffer=0
werte = line.split(' ')
for zahl in suchliste:
if (zahl in werte):
treffer += 1
if (treffer > 2):
print ("treffer:", treffer, " am" , werte[0], "in" , line)
f.close()
gibt
treffer: 3 am 11.06.2016 in 11.06.2016 6 13 21 27 38 45