在" while"我需要验证在lindex位置1的下一行是否在此轮中具有相同的ip。
如果是的话,做一些事,如果不做的话。
ips.txt
169.254.0.1,169.254.1.1
169.254.0.2,169.254.1.1
169.254.0.3,169.254.1.2
169.254.0.4,169.254.1.2
如何使用tcl执行此操作?
感谢。
答案 0 :(得分:0)
略显简单,但应该做的工作:
set ch [open ips.txt]
set prev {}
while {[chan gets $ch ips] >= 0} {
lassign [split $ips ,] ipa ipb
if {$prev ne {}} {
if {$prev eq $ipb} {
# do something
} else {
# do another thing
}
} else {
# do something with the first line
}
set prev $ipb
}
chan close $ch
从内到外:基于prev
中的值(前一行的第二个ip地址,如果我们正在读取第一行,则为空字符串)和ipb
(第二行)来自当前行的ip地址)是否相等,做“某事”或“另一件事”。该行中的两个IP地址都可以作为ipa
和ipb
的值进行处理。
为了确保我们只有在有效地址进行比较时才这样做(请注意,这使您可以选择将prev
预设为默认值),此比较包含在{{{ 1}}和空字符串。
在每一行上,在比较任何内容之前,将该行拆分为两个地址并将其存储在$prev
和ipa
中。比较后,将值ipb
复制到ibp
,以便在处理下一行时使用。
读取并处理文件中的所有行。
如果无法打开文件进行读取,此脚本将引发错误异常。文件中格式错误的行不应该导致问题,但可能会将prev
设置为空字符串。