繁体   English   中英

Tcl-Tk在文件中查找特定单词

[英]Tcl-Tk Find a specific word in a file

我试图在一个文本文件中找到匹配的行,该文本文件具有4列数字,如下所示:

number                coordinates
101138  0.420335 -.238945 .1446484
101139  .4134844 -0.2437 6.7484e-2
101140  .4140046 -.243681 7.3344e-2

我需要阅读文本文件,并在第一列中找到一个特定数字,然后仅绘制其坐标。

这是我的代码,其中我尝试查找数字“ 101138”的坐标,但是由于找不到匹配项,所以某些操作不起作用。

set Output [open "Output1.txt" w]
set FileInput     [open "Input.txt" r]

set filecontent [read $FileInput]
set inputList [split $filecontent "\n"]

set Text [lsearch -all -inline $inputList "101138"]
foreach elem $Text {
    puts $Output "[lindex $elem 1] [lindes $elem 2] [lindex $elem 3]"
}

您正在搜索与给定值“ 101138”完全匹配的列表元素。 但是,您的列表是由具有多个空格分隔的列的行构成的。 您需要修改搜索以匹配正确列中的该值。

一种方法是再次分割每一行,然后在正确的列上执行均等匹配。 另一个可能是使用实际上与输入匹配的glob或regexp表达式。 即:

% set lst {"123 abc def" "456 efg ijk" "789 zxc cvb"}
"123 abc def" "456 efg ijk" "789 zxc cvb"
% lsearch -all -inline $lst "456*"
{456 efg ijk}
% lsearch -all -inline -regexp $lst "^456"
{456 efg ijk}

第二行进行标准(全局)匹配,以456开头的列表元素后跟任何内容。

最后一行使用正则表达式匹配搜索以“ 456”开头的列表元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM