用于换行符解析的正则表达式

普拉布

我正在尝试调试perl脚本以解析snmpwalk包含端口详细信息的IPv6地址的表上的输出。

snmpwalkShell上命令执行和结果如下:

[root@newton log]# /usr/bin/snmpwalk -v 2c -c secret localhost  SNMP-TARGET-MIB::snmpTargetAddrTAddress
SNMP-TARGET-MIB::snmpTargetAddrTAddress.'2' = Hex-STRING: FD 22 1A 16 0E D3 01 00 00 00 00 00 00 10 00 41 
00 A2

perl脚本尝试在snmpTargetAddrTAddress.->之后获取值,即2,然后在之后获取值Hex-STRING它在代码中使用以下正则表达式

@buf   = `$snmpwalk $address_oid`;
foreach (@buf) {
      if (/snmpTargetAddrTAddress\.'(.+?)' = Hex-STRING: ([\w ]+)/)
             my $name = $1;
             my $rest= $2;
             log_msg( LOG_CRIT, "Found IP $rest for $name" );
      }

$ 1等于 2

$ 2等于 FD 22 1A 16 0E D3 01 00 00 00 00 00 00 10 00 41

但是我也需要00 A2在shell中的换行符中出现的值

我尝试了在线工具-https: //regex101.com/它提供了正则表达式为([\ w] +)(\ n [\ w] +)。但是在代码中使用时,我没有任何输出。

以下不输出任何

if (/snmpTargetAddrTAddress\.'(.+?)' = Hex-STRING: ([\w ]+)(\n[\w ]+)/

我可能做错了什么?在线工具中的上述表达式会产生结果。如果我需要让shell输出中换行符出现的字符,我还可以使用其他哪些正则表达式?

@GMB建议后的代码:

if(/snmpTargetAddrTAddress\.'(.+?)' = Hex-STRING: ([\w\s\n]+)/) {
        my $name = $1;
        my $rest = $2;
        log_msg( LOG_CRIT, "Found IP $rest for $name" );
 }

看到的日志是: " Found IP FD 22 1A 16 0E D3 01 00 00 00 00 00 00 10 00 41 for 2"

更新:根据@zdim和@ikegami的评论,我错误地认为“ 00 A2”将是第二次迭代本身的一部分。由于它们出现在第三行,因此可以在foreach

专线小巴

为什么不简单地将换行符添加到允许的字符列表中呢?实际上,正如zdim所评论的,它同时\s匹配空格和换行符,因此您可以执行以下操作:

/snmpTargetAddrTAddress\.'(.+?)' = Hex-STRING: ([\w\s]+)/

如果需要,您可以将其从解析值中删除:

use strict;
use warnings;

my $str = qq/SNMP-TARGET-MIB::snmpTargetAddrTAddress.'2' = Hex-STRING: FD 22 1A 16 0E D3 01 00 00 00 00 00 00 10 00 41\n00 A2/;
if (my ($addr, $hex) =  ($str =~ /snmpTargetAddrTAddress\.'(.+?)' = Hex-STRING: ([\w\s]+)/)) {
    $hex =~  s/\n/ /; 
    print "addr: $addr\nhex: $hex\n"
}

产量:

addr: 2
hex: FD 22 1A 16 0E D3 01 00 00 00 00 00 00 10 00 41 00 A2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式与换行符不匹配

来自分类Dev

正则表达式替换Windows换行符

来自分类Dev

正则表达式换行符

来自分类Dev

正则表达式换行符遇到StackOverflowError

来自分类Dev

正则表达式包括换行符

来自分类Dev

正则表达式替换Windows换行符

来自分类Dev

正则表达式删除换行符

来自分类Dev

正则表达式包含换行符

来自分类Dev

一个用于列表项和换行符的PHP正则表达式

来自分类Dev

正则表达式,用于在逗号之间用换行符配对

来自分类Dev

正则表达式,用于替换所有不在';'之后的换行符

来自分类Dev

使用正则表达式从包含换行符的文本中解析字符串

来自分类Dev

用可选的换行符对多行条目进行正则表达式解析

来自分类Dev

正则表达式匹配之前删除换行符\换行符

来自分类Dev

正则表达式以匹配单个换行符。正则表达式匹配双换行

来自分类Dev

正则表达式-检查表达式是否以换行符结尾

来自分类Dev

正则表达式PHP,用于查找和替换空格和/或HTML标记之间的换行符

来自分类Dev

正则表达式,用于查找{}内的所有文本,包括空格和换行符

来自分类Dev

一个或多个空格,制表符或换行符的正则表达式

来自分类Dev

正则表达式以匹配换行符和括号之间的制表符

来自分类Dev

正则表达式可打印的ASCII加上换行符和回车符

来自分类Dev

Java正则表达式匹配无回车符,后跟换行符

来自分类Dev

Python正则表达式替换单个换行符,并忽略两个或多个换行符的序列

来自分类Dev

正则表达式拆分换行符-在比赛结束时保留捕获的换行符

来自分类Dev

正则表达式 - 用两个换行符替换多个换行符并在末尾删除换行符?

来自分类Dev

正则表达式-如何不匹配两个换行符

来自分类Dev

正则表达式在IntellliJ末尾查找没有换行符的文件

来自分类Dev

如何在C ++正则表达式中匹配换行符?

来自分类Dev

正则表达式仅返回直到换行符的数字

Related 相关文章

  1. 1

    正则表达式与换行符不匹配

  2. 2

    正则表达式替换Windows换行符

  3. 3

    正则表达式换行符

  4. 4

    正则表达式换行符遇到StackOverflowError

  5. 5

    正则表达式包括换行符

  6. 6

    正则表达式替换Windows换行符

  7. 7

    正则表达式删除换行符

  8. 8

    正则表达式包含换行符

  9. 9

    一个用于列表项和换行符的PHP正则表达式

  10. 10

    正则表达式,用于在逗号之间用换行符配对

  11. 11

    正则表达式,用于替换所有不在';'之后的换行符

  12. 12

    使用正则表达式从包含换行符的文本中解析字符串

  13. 13

    用可选的换行符对多行条目进行正则表达式解析

  14. 14

    正则表达式匹配之前删除换行符\换行符

  15. 15

    正则表达式以匹配单个换行符。正则表达式匹配双换行

  16. 16

    正则表达式-检查表达式是否以换行符结尾

  17. 17

    正则表达式PHP,用于查找和替换空格和/或HTML标记之间的换行符

  18. 18

    正则表达式,用于查找{}内的所有文本,包括空格和换行符

  19. 19

    一个或多个空格,制表符或换行符的正则表达式

  20. 20

    正则表达式以匹配换行符和括号之间的制表符

  21. 21

    正则表达式可打印的ASCII加上换行符和回车符

  22. 22

    Java正则表达式匹配无回车符,后跟换行符

  23. 23

    Python正则表达式替换单个换行符,并忽略两个或多个换行符的序列

  24. 24

    正则表达式拆分换行符-在比赛结束时保留捕获的换行符

  25. 25

    正则表达式 - 用两个换行符替换多个换行符并在末尾删除换行符?

  26. 26

    正则表达式-如何不匹配两个换行符

  27. 27

    正则表达式在IntellliJ末尾查找没有换行符的文件

  28. 28

    如何在C ++正则表达式中匹配换行符?

  29. 29

    正则表达式仅返回直到换行符的数字

热门标签

归档