2016-07-14 50 views
-1

下面我写了我的基本目标和我已经有的代码,任何帮助非常感谢,因为我正在学习自己如何IRC脚本工作,谢谢你们!

on $*:text:*test*:#: { 
    if ($date isin $read(test1.txt, 1)) { 
    if ($nick isin $read(test1.txt, 1)) { write test.txt "entire line $nick was found on in test1.txt" $1- } 
} 
} 
+0

你必须明确你想达到什么!简单地放置代码并寻求我们的帮助不会削减它,我们需要了解您希望完成的预期行为。 –

+0

@OrelEraki对于我来说,通过阅读他的'伪代码' – Denny

+0

@ Denny,我很清楚他想要达到什么目的,我敢打赌,由于多种原因,我打赌了这种差异。 –

回答

1

未来,您应该让问题更清楚。

你的问题看起来像这个mIRC Search for multiple words in text file,你可以在这里阅读我的答案以获得更多信息,它大部分是相同的,所以我在这里复制并粘贴它,并对你的案例进行编辑。

要逐行读取.txt文件,您需要一个循环。要使用这种环型:/findNick <NICK>

alias findNick { 
    var %nick = $1 
    while ($read(test1.txt, nw, $+(*,$date,*), $calc($readn + 1))) { 
    var %line = $v1 
    if (%nick isin %line) { 
     echo -a %nick found on the line: %line 
     ; do your stuff here 
    } 
    } 
} 

$readn是一个返回​​匹配线的标识符。它用于开始搜索下一行的模式。在这种情况下,$date。星号意味着一个通配符,所以任何包含该日期的东西。

在上面的代码中,$readn从0开始。我们使用$calc()从第1行开始。每个匹配​​将开始搜索下一行。如果在指定的行$read将返回$null之后没有更多匹配 - 终止循环。

w开关用于使用通配符搜索

n开关,防止评估它的内容,如果它是MSL代码的文本。在差不多每个的情况下,你必须使用n开关。除非你真的需要它。如果不使用'n'开关不正确地使用$ read()标识符,可能会使脚本极易受到攻击。

结果存储在名为%line的变量中,以再次使用它来检查$nick是否在找到的行中。如果找到$nick,它将在活动窗口中回显结果。

再说一遍,如果还有什么不清楚的地方,我会试着更好地解释它。