Я пытаюсь выполнить несколько совпадений регулярных выражений на одном и том же выводе экрана во время одного сеанса взаимодействия.С помощью следующего кода я получаю сообщение об ошибке: "не могу использовать -o более одного раза"
В конечном итоге я хочу извлечь несколько небольших переменных данных из каждого экрана вывода, используя несколькорегулярные выражения, как описано в этот вопрос .Возможно ли то, что я пытаюсь сделать, если да, какой правильный синтаксис?
interact {
#...
#... actions during interact loop to perform with variables extracted
#...
#variable extraction from output ------------------------------------
-o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} {
#get po number
set poraw $interact_out(0,string)
#get just po out
set po [string range $poraw 6 11]
#switch to lowercase
set po [string tolower $po]
#send_user " stored po: $po"
}
#get cost from po detail
#ex. 001b[14;27H 20.1900
-o -nobuffer -re {(\[14\;27H)[0-9]{0-6}\.{1}[0-9]{4}} {
set pocost $interact_out(0,string)
send_user " stored po cost: $pocost"
}
}
РЕДАКТИРОВАТЬ: Таким образом, код, который работал, выглядит следующим образом:
interact {
#...
-o
-nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} {
#get po number
set poraw $interact_out(0,string)
#get just po out
set po [string range $poraw 6 11]
#switch to lowercase
set po [string tolower $po]
}
#get cost from po detail
#ex. 001b[14;27H 20.1900
-nobuffer -re {(\[14\;27H) *[0-9]{0,6}\.{1}[0-9]{4}} {
set pocostraw $interact_out(0,string)
set pocosttrim [string range $pocostraw 7 17]
set pocost [string trimleft $pocosttrim ]
send_user " stored po cost: $pocost"
}
}