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



我有一个文件,其中包含一组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(或其他OS上的-r(启用POSIX ERE语法,该语法允许在模式中使用更少的转义(无需转义分组()符号以及限制/范围量词{n,m}(。

详细信息

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

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

请参阅在线演示。

最新更新