2014-03-12 3 views
1
내가 파일에서 IPADDRESS을 grep을하고

그렙 IPADDRESS는에 스크립트

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) 

scritp 기대에 변수에 설정할

을 기대하지만 난 suceeding 아니에요. 어떤 생각? 나는/usr/local/bin/expect를 사용하고있다. 감사합니다.

+0

파싱하려는 출력의 예를 들려 줄 수 있습니까? –

+0

R @ rn2osscs603> CD/var에/옵션/BLA/EDD/ARNE_SIU ranosusr @ rn2osscs603> 그렙 -IL FXL704 * FXL704_FRTAMX_SIU_ARNE.xml ranosusr @ rn2osscs603> ............... .. 이것은 출력물이며 File : FXL704_FRTAMX_SIU_ARNE.xml에서 Ipaddress와 aasign을 변수 – user3319356

답변

1

빠른 검사에서 성명서에 이중 프롬프트를 표시하려고합니다. 당신은 기대 regexp의 끝 부분에 리터럴 프롬프트 다음에 변수가있는 것 같습니다. 그게 니가 원하는거야?

그 외에도을 스크립트 상단에 놓는 것이 좋습니다. 그런 식으로 기대되는 결과를 로그에 출력하여 일치 여부를 표시합니다. 당신은 그것 없이는 정규식 매치를 디버깅하려하지 않아야합니다. 어두운 곳에서 검색하는 것과 같습니다 ...

+0

에 grep해야합니다. 스크립트의 beginig에 expect_internal 1을 넣었습니다. 어떤 아이디어를 어떻게 파일 이름에서 주소를 grep 할 수 있고, 내가 기대하는 주소를 기대할 수 있습니까? – user3319356

+0

위의 방법이 좋다고 생각합니다. 하지만 당신이 기대하는 정규 표현식을 조정하여 일치시킬 필요가 있다고 생각합니다. 'exp_internal 1'이 설정된 스크립트를 실행하면 expect가 정규 표현식을 조정할 수있는 많은 유용한 정보를 반환한다는 것을 알 수 있습니다. 원한다면 질문을 편집하고 디버깅 결과를 추가 할 수 있으며, 해석하기 쉽도록 도와 줄 수 있습니다. 이해하기 어렵지는 않지만 알 수 있습니다. – James

+0

나는 이것에서 새롭다. 그래서 그것은 나를 많이 도와주지 않았다. 나는 코드가 괜찮다는 것을 의미하지만, grep ipaddress, 숫자로 모든 버전을 시도했지만 그것이 나에게 오류를주고 있음을 알지 못한다. 그래서 기본적으로 grep 일반 IP 주소와 다음 행에서이 주소를 이미 할당 된 패턴과 함께 예상합니다. – user3319356