【问题标题】: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", $& 根据需要格式化匹配的字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2013-07-30
      • 2014-02-05
      相关资源
      最近更新 更多