[英]sed remove first two octets from 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
(或其他操作系统上的-r
)启用POSIX ERE语法,允许在模式中使用较少的转义(不需要转义分组(
和)
符号和限制/范围量词{n,m}
)。
细节
\\b
- 单词边界 ([0-9]{1,3}\\.){2}
- 两个(组1)出现一到三个数字和一个点 ([0-9]{1,3}\\.[0-9]{1,3})
- (第2组)一至三位数,a .
再次1到3位数 \\b
- 单词边界 整个匹配将替换为组2值( \\2
)。 -i.bak
将在文件中进行替换,并将生成扩展名为.bak的原始副本。
请参阅在线演示 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.