有一个要搜索的列表
top -l 2 -n 5 -o mem | sed '1,10d;n;' | awk '{ printf("%-8s %-12s %-6s %-6s\n", $1, $2, $3, $8); }'
我想找到haystack中存在searchstring的所有索引:
set haystack [list a b c d e e f e]
我尝试过使用
set needle e
但我没有得到预期的答案4 5 7。
答案 0 :(得分:3)
这会给你你想要的东西:
lsearch -all $haystack $needle
你写的是什么:
set foundat [expr {[lsearch -all $haystack $needle] >= 0}]
如果找到了搜索结果,则在foundat中的位置。
答案 1 :(得分:0)
命令:
set foundat [expr {[lsearch -all $haystack $needle] >= 0}]
找到$needle
在$haystack
中的所有位置,并生成所有这些位置的列表。这是一个数字列表。然后它将列表作为字符串与值0
进行比较,除非列表中只有一个项目,但效果是相同的,因为它基本上最终产生一个真值找到值的任何结果。但实际上你只是想要:
set foundat [lsearch -all $haystack $needle]
set haveFoundAny [expr { [llength $foundat] != 0 }]
什么都没找到?空列表。发现了什么?非空列表。
答案 2 :(得分:0)
您提到的列表
set haystack [list a b c d e e f e]
set needle e
这会给你你想要的东西:
set e_index [lsearch -all $haystack $needle]
puts $e_index