如何在TCL文件中使用正则表达式匹配信息?

时间:2012-06-21 14:28:13

标签: regex tcl

我有一个存储在终端服务器中的文件,并且我想要使用TCL和正则表达式匹配的文件中存储了一些信息。

我怎么能实现这个目标?我是否需要打开文件才能使用regluar表达式? 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

是。从概念上讲,您将文件读入内存,然后使用正则表达式获取所需的信息。对于非常大的文件,您可以从一次读取一个部分(例如,一行)并将正则表达式应用到该文件中受益,但是您可能必须处理多行模式,这会使代码变得更加棘手

读取文件可能需要先将其复制到本地计算机。 (您通常可以避免在本地创建文件,但并非总是如此。)或者您将运行Tcl程序的位置重新定位到原始文件旁边;一般来说,这也可以起作用。

假设你有一个非常简单的案例:

# Use scp to bring file across; _many_ other options possible
exec scp otherhost:file.txt localfile.txt

# Read in the file:
set f [open localfile.txt]
set data [read $f]
close $f

# Get the interesting bits...
if {[regexp {MATCH_THIS: (\d+)} $data -> theNumber]} {
    # Found a match, number in $theNumber
}