【问题标题】:How to handle regular expression in ubuntu batch script that deal with IPv6如何在处理 IPv6 的 ubuntu 批处理脚本中处理正则表达式
【发布时间】:2016-09-17 15:22:04
【问题描述】:
我使用 radvd 生成了 3002:0200:00bc:098a::/64 格式的 64 位前缀,但它以 3002:200:bc:98a:: 的形式出现在客户端设备的 eth0 中/64。现在我有脚本可以提取此地址并保存到文件中,例如“temp”为 3002:200:bc:98a 。我现在需要将其更改为 3002:0200:00bc:098a 的形式,我们将不胜感激。
【问题讨论】:
标签:
linux
shell
ubuntu-14.04
ipv6
【解决方案1】:
$ cat ip.txt
3002:200:bc:98a
20:1:ad:8b
$ perl -lpe 's/[^:]+/sprintf "%04s", $&/ge' ip.txt
3002:0200:00bc:098a
0020:0001:00ad:008b
-
[^:]+ 要转换的字段
-
ge 其中g 用于替换所有匹配项,e 允许在替换部分中使用 Perl 代码
-
sprintf "%04s", $& 根据需要格式化匹配的字符串