gpt4 book ai didi

regex - sed 从 ip 中删除前两个八位字节

转载 作者:行者123 更新时间:2023-11-29 09:14:30 25 4
gpt4 key购买 nike

我有一个包含一堆 IP 地址的文件。我想让我的 sed 命令删除其中的前两个八位字节。前任。 172.0.0.1 应更改为 XXX.ZZZ.0.1

我现在删除了最后的八位字节并将其替换为 x!

sed -i 's/\(\([0-9]\{1,3\}\.\)\{3\}\)[0-9]\{1,3\}/\1XXX/g' "${file}"

这是在 bash 脚本中运行的,它将包含 ip 地址的文件作为输入参数。

我还没有弄清楚如何使用 sed 做到这一点,所以我将不胜感激任何帮助。

最佳答案

看来你可以用

sed -i.bak -E 's/\b([0-9]{1,3}\.){2}([0-9]{1,3}\.[0-9]{1,3})\b/XXX.ZZZ.\2/g' "${file}"

-E(或其他操作系统上的 -r)启用 POSIX ERE 语法,允许在模式中使用更少的转义(无需转义分组 () 符号和限制/范围量词 {n,m})。

详情

  • \b - 单词边界
  • ([0-9]{1,3}\.){2} - (第 1 组)一到三位数字和一个点的两次出现
  • ([0-9]{1,3}\.[0-9]{1,3}) -(第 2 组)一到三位数字,. 又是 1 到 3 位数字
  • \b - 单词边界

整个匹配项替换为第 2 组值 (\2)。 -i.bak 将在文件中进行替换,并生成扩展名为 .bak 的原始副本。

参见 online demo .

关于regex - sed 从 ip 中删除前两个八位字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45915601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com