将 "/" 替换为字符串 Perl 中的 "/"



大家好!

发短信

我的脚本中有一点问题。我想用/替换变量中的/。这里有一个解释:

我有一个变量:

$LAN = GigabitEthernet0/0.20

但是当我在正则表达式中使用此变量时,/是一个问题。所以我想把GigabitEthernet0/0.20改成GigabitEthernet0/0.20.

我尝试过这个:$LAN =~ s/FIND/REPLACE/ig;但由于所有/而不起作用。我也尝试过$LAN =~ m/////ig;

澄清

我正在路由器上执行命令show arp。这是结果的格式:

Internet 192.168.1.1 34 99gg.zz23.atx2 ARPA GigabitEthernet0/0.20

我使用正则表达式提取设备的IP地址:(d+.d+.d+.d+).*ARPAs+$LAN,显然由于/,它与GigabitEthernet 0/0.20不匹配。这就是为什么我想把它变成/.

提前:)感谢

如果您对我的正则表达式有其他建议,请随时告诉我。

quotemeta() 函数将获取一个字符串并返回它,以便正确转义正则表达式引擎使用的所有特殊字符。

例如。

$lan = quotemeta('GigabitEthernet0/0.20');

$lan现在GigabitEthernet0/0.20

问题是您需要转义正则表达式中出现的所有斜杠。因此,当您有以下内容时,FIND 是/并且替换是 \/

s/FIND/REPLACE/ig

你不能只是把它们按原样放进去——你需要逃避它们。你也需要转义反斜杠。所以它变成了

s///\//ig

看起来很丑陋,被称为倾斜牙签综合症。

但是您不需要这样做,因为您可以更改用于在 s///或 m//等中分隔的字符......像这个例子,尽管你仍然需要转义反斜杠。

s%/%\/%ig

最新更新