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

时间:2015-05-06 07:37:20

标签: file tcl tk

我试图在一个包含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]"
}

1 个答案:

答案 0 :(得分:0)

您正在搜索与您的给定值“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}

第二行执行标准(glob)匹配,查找以456开头的列表元素,后跟任何内容。

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