我通过以下方式从服务器接收输入(示例输入数据):
[1284336000]: host1;event1;flag;state;counter;errors or warnings
[1284336000]: host2;event1;flag;state;counter;errors or warnings
[1284336000]: host1;event2;flag;state;counter;errors or warnings
[1284336000]: host2;event2;flag;state;counter;errors or warnings
我必须匹配输入并基于匹配,创建一个带有 value 的变量hostname-eventname
。
我的正则表达式
^\[\d+\]:\s((host1);(event1)|(host2);(event2)|(host3);(event2)|(host2);(event1));(\w+);(\w+);(\d).+$
我想在引用变量中分别显示主机和事件的名称,例如$2
or $3
。
例如,考虑这个输入:
[1284336000]: host1;event1;flag;state;counter;errors or warnings
<hostname-eventname>
我需要根据从上面的匹配中获取的主机名和事件名创建一个名称的变量。
说,
$myVar=$2-$3 (that is, $myVar=host1-event1)
我不能再应用任何拆分操作。所以没有编程:我只能读取输入数据。是的,正则表达式是 Perl 正则表达式类型。
我不知道我是否澄清了我的问题?