我有一个文件,其中包含一组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的原始副本。
请参阅在线演示。