wpsatisfide Posted February 5, 2007 Posted February 5, 2007 Im searching a file for a certain word, "Test" in this case. When I find "test" I need to get the persons name who sent me "test". example of text: From [John]: Test So I am looking to get john. Im pretty new to this and just learning autoit. Any help is appreciated. Below is what I have so far to find the word test $FileName = "c:\logfile.txt" $Source = FileRead($FileName) $Word = "Test" If StringInStr($Source, "$Word") Then MsgBox (1, "Result", "$Word") Else MsgBox (1, "Result", "Not Found") EndIf
flyingboz Posted February 5, 2007 Posted February 5, 2007 Im searching a file for a certain word, "Test" in this case. When I find "test" I need to get the persons name who sent me "test".One method would be to write a wrapper around a windows port of "grep" or the windows "find" utility.This would provide scalability should your logsize increase.Otherwise, read the file contents into an array or read / test each line individually. Reading the help file before you post... Not only will it make you look smarter, it will make you smarter.
nobbe Posted February 5, 2007 Posted February 5, 2007 hi try _StringBetween () to get the values between [ ]
evilertoaster Posted February 5, 2007 Posted February 5, 2007 stringmid($source,StringInStr($Source, "$Word")-7,5) Would probably work in thise case but this changes depending on how long the users name is... stringmid extracts from $source, starts at the posision of "Word"-7, that is 7 charactors before word, and get the next 5 charactors...should be about right (depends on if there's a space there or not)..but its harder to make this dynamic if the user name is not known before hand:P
Xenobiologist Posted February 5, 2007 Posted February 5, 2007 Hi, how does the log look like? maybe RegExp can do the job too. So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
wpsatisfide Posted February 5, 2007 Author Posted February 5, 2007 (edited) Hi, how does the log look like? maybe RegExp can do the job too. So long, Mega log is pretty basic saved chatlog with each event on a seperate line. I need to search the txt file to see if a word (Test) is in there. If it is I need to get the persons name, which always starts at 7th space and ends 4 spaces before the word, test in this case. To [John]: Hey From [bill]: Test From [bill]: what time is it [Jill] logged on To [bill]: Its 3:17 Edited February 5, 2007 by wpsatisfide
Moderators SmOke_N Posted February 5, 2007 Moderators Posted February 5, 2007 log is pretty basic saved chatlog with each event on a seperate line. I need to search the txt file to see if a word (Test) is in there. If it is I need to get the persons name, which always starts at 7th space and ends 4 spaces before the word, test in this case. To [John]: Hey From [bill]: Test From [bill]: what time is it [Jill] logged on To [bill]: Its 3:17#include <string.au3> #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " $SearchString = 'Test' $aArray = _StringBetween($sString, 'From\s*\[', ']:\s*' & $SearchString, -1, 1) _ArrayDisplay($aArray, '') Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
wpsatisfide Posted February 5, 2007 Author Posted February 5, 2007 #include <string.au3> #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " $SearchString = 'Test' $aArray = _StringBetween($sString, 'From\s*\[', ']:\s*' & $SearchString, -1, 1) _ArrayDisplay($aArray, '') I dont have a damn clue whats going on here, but it works. Thank you very much
wpsatisfide Posted February 5, 2007 Author Posted February 5, 2007 Nevermind thats not going to work I dont think. To use that I would have to have to edit every line of the text file with & @CRLF & _ (I think?) Also I need to open a file containing random chat with text that im unsure of.
Xenobiologist Posted February 5, 2007 Posted February 5, 2007 HI, #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "Fro qwm [Hugo] : Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " ;$aArray = StringRegExp($sString, '\[.*](?=(.*Test))', 3) Thought this should work, but it doesn't like Regexbuddy shows :-( $aArray = StringRegExp($sString, '(\[.*])(?=(.*Test))', 3) _ArrayDisplay($aArray, '') So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
wpsatisfide Posted February 5, 2007 Author Posted February 5, 2007 HI, #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "Fro qwm [Hugo] : Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " ;$aArray = StringRegExp($sString, '\[.*](?=(.*Test))', 3) Thought this should work, but it doesn't like Regexbuddy shows :-( $aArray = StringRegExp($sString, '(\[.*])(?=(.*Test))', 3) _ArrayDisplay($aArray, '') So long, Mega Yeah but i dont need to search To [John]: Hey From [bill]: Test From [bill]: what time is it [Jill] logged on To [bill]: Its 3:17 I need to search logfile.txt, so I dont think thats going to work.
BrettF Posted February 5, 2007 Posted February 5, 2007 Filereadtoarray ??? Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version!
Xenobiologist Posted February 5, 2007 Posted February 5, 2007 Hi, #include <array.au3> $aArray = StringRegExp(FileRead(FileOpen(@ScriptDir & "\logfile.txt", 0)), '(\[.*])(?=(.*Test))', 3) _ArrayDisplay($aArray, '') So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
Moderators SmOke_N Posted February 5, 2007 Moderators Posted February 5, 2007 HI, #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "Fro qwm [Hugo] : Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " ;$aArray = StringRegExp($sString, '\[.*](?=(.*Test))', 3) Thought this should work, but it doesn't like Regexbuddy shows :-( $aArray = StringRegExp($sString, '(\[.*])(?=(.*Test))', 3) _ArrayDisplay($aArray, '')oÝ÷ Ù*%¢xz¿ªê-zØfz«Ê·ö·°¢¹"¨º´^Li«az¸ZÛZ楢¶Øb±«¢+Ø¥¹±Õ±ÐíÉÉä¹ÔÌÐì(ÀÌØíÍMÑÉ¥¹ôÅÕ½ÐíQ¼m)½¡¹tè!äÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɽ´m ¥±±tèQÍÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɼ%ÅÝ´m!Õ½tèQÍÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɽ´m ¥±±tèÝ¡ÐÑ¥µ¥Ì¥ÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðím)¥±±t±½½¸ÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½ÐíQ¼m ¥±±tè%ÑÌÌèÄÜÅÕ½Ðì(ÀÌØíMÉ¡MÑÉ¥¹ôÌäíQÍÐÌäì(ÀÌØíÉÉäôMÑÉ¥¹IáÀ ÀÌØíÍMÑÉ¥¹°Ìä츨üÀäÈíl ¸¨ü¤ÀäÈít¸¨üÌäìµÀìÀÌØíMÉ¡MÑÉ¥¹°Ì¤)}ÉÉå¥ÍÁ±ä ÀÌØíÉÉä°ÌäìÌäì¤ Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
wpsatisfide Posted February 5, 2007 Author Posted February 5, 2007 Thanks a ton for both of your time
Xenobiologist Posted February 5, 2007 Posted February 5, 2007 @thmeger... you're working your RegExp rather hard... take a look at this ... Hi Ron, I thought he needs to know wether Test is in the string and if it is, then he needs the name. He doesn't need all the things/names between the [] that is way I made the lookahead. So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
Moderators SmOke_N Posted February 5, 2007 Moderators Posted February 5, 2007 Hi Ron, I thought he needs to know wether Test is in the string and if it is, then he needs the name. He doesn't need all the things/names between the [] that is way I made the lookahead. So long, MegaThis is true, but you make a conditional statement after it: Example of No Search word present: #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Teit" & @CRLF & _ "Fro qwm [Hugo] : Teat" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " $SearchString = 'Test' $aArray = StringRegExp($sString, '.*?\[(.*?)\].*?' & $SearchString, 3) If IsArray($aArray) Then _ArrayDisplay($aArray, '') Else MsgBox(16, 'Error', 'No search pattern found') EndIfoÝ÷ ØLZ^¡ø§¶¬¶¸§«¢+Ø¥¹±Õ±ÐíÉÉä¹ÔÌÐì(ÀÌØíÍMÑÉ¥¹ôÅÕ½ÐíQ¼m)½¡¹tè!äÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɽ´m ¥±±tèQÍÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɼ%ÅÝ´m!Õ½tèQÍÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðíɽ´m ¥±±tèÝ¡ÐÑ¥µ¥Ì¥ÐÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½Ðím)¥±±t±½½¸ÅÕ½ÐìµÀì I1µÀì|($$ÅÕ½ÐíQ¼m ¥±±tè%ÑÌÌèÄÜÅÕ½Ðì(ÀÌØíMÉ¡MÑÉ¥¹ôÌäíQÍÐÌäì(ÀÌØíÉÉäôMÑÉ¥¹IáÀ ÀÌØíÍMÑÉ¥¹°Ìä츨üÀäÈíl ¸¨ü¤ÀäÈít¸¨üÌäìµÀìÀÌØíMÉ¡MÑÉ¥¹°Ì¤)%%ÍÉÉä ÀÌØíÉÉä¤Q¡¸(%}ÉÉå¥ÍÁ±ä ÀÌØíÉÉä°ÌäìÌäì¤)±Í(%5Í ½à ÄØ°ÌäíÉɽÈÌäì°Ìäí9¼ÍÉ ÁÑÑɸ½Õ¹Ìäì¤)¹% Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
Xenobiologist Posted February 5, 2007 Posted February 5, 2007 Hi, ah okay. I see the difference. Mine was a bit to complicated, I guess. I made a condition to check first whether there is a Test an then look between the []. Nevermind! You do not need to do this \] cause it is no metasign. #include <array.au3> $sString = "To [John]: Hey" & @CRLF & _ "From [Bill]: Test" & @CRLF & _ "Fro qwm [Hugo] : Test" & @CRLF & _ "From [Bill]: what time is it" & @CRLF & _ "[Jill] logged on" & @CRLF & _ "To [Bill]: Its 3:17 " $SearchString = 'Test' $aArray = StringRegExp($sString, '.*?\[(.*?)].*?' & $SearchString, 3) If IsArray($aArray) Then _ArrayDisplay($aArray, '') Else MsgBox(16, 'Error', 'No search pattern found') EndIf So long, Mega Scripts & functions Organize Includes Let Scite organize the include files Yahtzee The game "Yahtzee" (Kniffel, DiceLion) LoginWrapper Secure scripts by adding a query (authentication) _RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...) Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc. MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times
Moderators SmOke_N Posted February 5, 2007 Moderators Posted February 5, 2007 You do not need to do this \] cause it is no metasign.Old habits die hard! Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now