0

1 つのファイル ip.txt があるとします。

IP アドレス: 192.168.0.100/24 GW: 192.168.0.1
IP アドレス: 192.169.0.100/24 GW: 192.169.0.1
IP アドレス: 192.170.0.100/24 GW: 192.170.0.1

上記の 3 行は ip.txt の内容です。second line 192.169.0.1そのファイルから、 TCL 正規表現を使用して行ごとに Gw IP アドレスを一致させたいと考えています。誰でもアイデアを得るのを手伝ってください。前もって感謝します

4

2 に答える 2

0

最初の行を読んで破棄します。行 2 が一致する場合は終了します。それ以外の場合は終了します。

set f [open $filename r]
if {[gets $f line] == -1} { return -code error "failed to read line 1" }
if {[gets $f line] == -1} { return -code error "failed to read line 2" }
if {![string match "*GW: 192.169.0.1*" $line]} { return -code error "failed to match" }
return

もちろん、常に 2 行目であるとは限らず、ファイルを閉じるように配置するのが賢明ですが、上記は提供された仕様を満たす tcl の最も単純なバージョンです。開いているファイルは、プロセスの終了時に閉じられます。正規表現は必要ありません。文字列の一致で問題ありません。または:

set f [open $filename r]
set lineno 1
while {[gets $f line] != -1 && $lineno < 3} {
    if {$lineno == 2 && [regexp {GW: 192.169.0.1} $line]} {
        return 1
    }
    incr lineno
}
close $f
return 0
于 2013-10-25T07:00:57.377 に答える