expect脚本中的grep Ipaddress

expect脚本中的grep Ipaddress,expect,Expect,我想从文件中grep ipaddress,并在expect scritp中将其设置为变量 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)

我想从文件中grep ipaddress,并在expect scritp中将其设置为变量

  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)

但我没有成功。有什么想法吗?我正在使用/usr/local/bin/expect。感谢您快速浏览,在我看来,您试图在您的声明中匹配双重提示。在expect regexp的末尾,似乎有一个变量后跟一个文字提示。你确定这就是你想要的吗


除此之外,我强烈建议您将
expect\u internal 1
放在脚本顶部的某个位置,这样expect将记录输出,显示匹配的内容(和不匹配的内容)。你真的不应该在没有它的情况下调试regexp匹配,这就像在黑暗中搜索…

你能给我们一个你试图解析的输出的例子吗?r@rn2osscs603>cd/var/opt/bla/edd/ARNEèu SIUranosusr@rn2osscs603>grep-il FXL704*FXL704\u FRTAMX\u SIU\ARNE.xmlranosusr@rn2osscs603>这就是输出,在文件FXL704\u FRTAMX\u SIU\u ARNE.xml中,我需要grep Ipaddress和aasign to variableok,我将expect\u internal 1放在脚本的开头。你知道我如何从文件名中grep地址,并期望得到我期望的地址-re命令吗?我相信你上面的方法是好的。但我认为您需要调整expect regexp,使其匹配。使用
exp\u internal 1
集运行脚本,您将看到expect将返回许多有用的信息,这些信息将允许您调整regexp。如果您愿意,您可以编辑您的问题并添加调试输出,我们可以帮助您解释它。。。虽然你会看到这并不难理解。我在这方面有点新,所以它对我帮助不大。我的意思是它的代码是可以的,但我不知道如何grep ipaddress,我尝试了所有版本的数字,但它给了我错误。因此,基本上我需要grep general ipaddress,在下一行中,期望该地址与已分配的模式一起。编辑您的问题,将运行脚本时得到的输出以可读格式包含在
expect\u internal 1
中(否则输出非常稀疏),我将尝试更具体一些。