2014-03-12 93 views
1

我想從文件的grep ip地址,並將其設置爲可變的期望scritpgrep的Ipaddress:顯示在expect腳本

send -- "cat $filename |grep ([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\})\r" 
    expect -re "([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}) *$prompt$" 
    set IP $expect_out(1,string) 

,但我不suceeding。任何想法?我正在使用/ usr/local/bin/expect。謝謝

+0

你能給我們一個你想要解析的輸出的例子嗎? –

+0

r @ r2oscs603> cd/var/opt/bla/edd/ARNE_SIU ranosusr @ rn2osscs603> grep -il FXL704 * FXL704_FRTAMX_SIU_ARNE.xml ranosusr @ rn2osscs603> ............... ..所以這是輸出,並在文件:FXL704_FRTAMX_SIU_ARNE.xml我需要grep Ipaddress和aasign變量 – user3319356

回答

1

從一個快速掃描,在我看來,你想在你的聲明中匹配一個雙重提示。您似乎有一個變量,然後在期望的正則表達式的末尾提供字面提示。你確定這是你想要的嗎?

除此之外,我強烈建議您將expect_internal 1放在腳本頂部的某處,並且這種方式期望將日誌輸出顯示它是什麼(而不是)匹配。你真的不應該試圖調試正則表達式匹配沒有它,就像在黑暗中搜索...

+0

好吧,我把expect_internal 1放在腳本的beginig。任何想法我怎麼可以從文件名grep地址,並期望我所期望的地址-re命令? – user3319356

+0

我相信你的上述方法很好。但我認爲你需要調整你期望的正則表達式,以便它匹配。用'exp_internal 1'設置運行腳本,你會發現這個期望會返回許多有用的信息,這將允許你調整你的正則表達式。如果你願意,你可以編輯你的問題並添加調試輸出,我們可以幫你解釋它......儘管你會發現它並不難理解。 – James

+0

我在這方面有點新,所以對我沒什麼幫助。我的意思是它的代碼是好的,但我不知道如何grep ipaddress,我試過所有版本號碼,但它給了我錯誤。所以基本上我需要grep通用ipaddress,並在下一行,期待這個地址與模式已分配。 – user3319356