예상 - 패턴의 모든 발생을 구문 분석하고 변수에 저장합니다.

예상 - 패턴의 모든 발생을 구문 분석하고 변수에 저장합니다.

프로그램 출력에서 ​​여러 Mac 주소를 처리하려고 합니다. 출력 형식은 다음과 같습니다 -

Device B0:CA:68:CF:88:54 dev1
Device DC:16:B2:AE:FB:8F dev2
Device B0:CA:68:CF:88:11 dev3
Device DC:16:B2:AE:FB:22 dev4

Mac 주소와 해당 이름을 파일에 저장하고 싶습니다. Mac 주소를 변수에 저장하고 추가로 처리하고 싶습니다.

Expect에 문제가 있습니다. 어떻게 하나요? 도와주세요

아래 명령은 작동하지만 단일 Mac만 제공합니다.

expect -re "Device.*(\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z]:\[0-9A-Z]\[0-9A-Z])"

답변1

프로그램과 상호 작용할 필요가 없으면 exec출력을 쉽게 캡처할 수 있습니다.

set output [exec some_program]

set macs [lmap line [split $output \n] {lindex [split $line] 1}]

인용하다:구현하다,지도

프로그램이 대화형이어야 하는 경우 출력을 캡처하는 것이 약간 까다롭습니다. 알려줘요.

관련 정보