Eine bestimmte Zeile einer Textdatei vorlesen

  • 11 Antworten
  • Letztes Antwortdatum
schmetty2

schmetty2

Stamm-User
248
Hallo,

ich habe eine Textdatei mit mehreren Zeilen. Jede Zeile beginnt mit einem anderen Wort. Dieses Wort übergebe ich per AutoVoice in eine Variable. Nun möchte das Tasker die Textdatei nach diesem Wort durchsucht und mir die gesamte Zeile, welche mit diesem Wort beginnt ausgibt. Ich denke das man dies über ein Array lösen kann, aber ich finde dazu keinen Lösungsansatz.
Hat jemand eine Idee?

mfg
 
Hallo!

Beispieldatei:
Code:
Erste Zeile
Zweite Zeile
Dritte Zeile

Code:
_ForumTest (2)
   A1: Read File [ File:Download/test.txt To Var:%file ]
   A2: Variable Set [ Name:%linefeed To:
 Do Maths:Off Append:Off ]
   A3: Variable Split [ Name:%file Splitter:%linefeed Delete Base:On ]
   A4: Variable Set [ Name:%query To:Dritte* Do Maths:Off Append:Off ]
   A5: Variable Set [ Name:%line To:%file(#?%query) Do Maths:Off Append:Off ]
   A6: Flash [ Text:%file(%line) Long:Off ]
Bei A2 einfach einmal Enter tippen, um den Zeilenumbruch zu erzeugen.

Grüße, Jürgen.
 
  • Danke
Reaktionen: schmetty2
Guten Morgen,

und wieder eine schnelle und perfekte Lösung von Jürgen!!
Super!!
Vielen, Vielen Dank
 
Etwas weniger "umständlich" (obwohl auch eine schöne lösung, #? kannt ich z.b nicht, Danke dafür) müsste auch so gehen

Test (127)
A1: Run Shell [ Command:grep Dritte /storage/emulated/0/test.txt Timeout (Seconds):0 Use Root:Off Store Output In:%out Store Errors In: Store Result In: ]
A2: Say [ Text:%out Engine:Voice:com.google.android.tts:deu-deu Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ]

(grep ist, zumindest bei neueren android Versionen, in der toolbox dabei, statt Suchwort Dritte kannst du auch die Autovoice variable nehmen)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: schmetty2
Hallo Vetzki,

das ist natürlich etwas weniger aufwändig, aber funktioniert erst ab zwei Buchstaben. Da das "Suchwort" auch mal nur einen Buchstaben enthalten kann, werde ich in diesem Fall Jürgens Version nehmen, welche zwar auch erst mit zwei Buchstaben läuft, aber durch hinzufügen eines Dummys (das zweite Wort in der Zeile) dann das richtige Ergebnis liefert. grep kann das wahrscheinlich auch, allerdings ist mein englisch nicht so, daß ich die Argumente alle deuten kann. Werd' sie mal einzeln durchgehen.

mfg
 
Wieso erst ab 2 Buchstaben? grep "D" gibt in dem fall Dritte Zeile aus. Noch ein paar Beispiele
 

Anhänge

  • Screenshot_2015-07-09-10-37-59~01.png
    Screenshot_2015-07-09-10-37-59~01.png
    20,5 KB · Aufrufe: 261
Beispieldatei:
Code:
Erste Zeile
Zweite Zeile
Dritte Zeile
V ierte Zeile

Code:
_ForumTest (2)
   A1: Read File [ File:Download/test.txt To Var:%file ]
   A2: Variable Set [ Name:%linefeed To:
Do Maths:Off Append:Off ]
   A3: Variable Split [ Name:%file Splitter:%linefeed Delete Base:On ]
   A4: Variable Set [ Name:%query To:V* Do Maths:Off Append:Off ]
   A5: Variable Set [ Name:%line To:%file(#?%query) Do Maths:Off Append:Off ]
   A6: Flash [ Text:%file(%line) Long:Off ]

Funktioniert auch ohne "Dummy".


Grüße, Jürgen.
 
Hallo,

Jo, ihr habt recht geht auch ohne Dummy: Hab' den Fehler gefunden. Ich hatte nicht die UTF-8 Kodierung für die Textdatei verwendet, weil hier ü,ä ... als Zeichen ausgegeben wurden. Habe jetzt umgestellt auf UTF-8 und ü in ue geändert, jetzt läufts.

Nochmals besten Dank Euch beiden.
 
Also es funktioniert jetzt wie gewünscht?
Sonst hätte ich noch eine weitere Alternative mittels "Search and Replace" anzubieten.
 
Hallo,

ich muß hier nochmal ausgraben.
Bisher wurde ja die gesamte Zeile ausgegeben. Nun brauch ich es etwas abgewandelt, d.h. es soll die Zeile ab einem bestimmten Zeichen (-) ausgegebn werden.

Danke
 
teile die Zeile doch einfach beim "-" und gebe nur den zweiten Teil wieder :)
 
Jo, war auch mein erster Gedanke. Aber ich dachte vllt. gibts ja noch ne elegante Lösung es gleich fertig auszugeben.
 

Ähnliche Themen

G
Antworten
5
Aufrufe
510
Cecoupeter
Cecoupeter
X
Antworten
2
Aufrufe
555
xyzUpdate
X
H
Antworten
6
Aufrufe
453
Horgul123
H
Zurück
Oben Unten