Regex sed从ip中删除前两个八位字节
我有一个包含一堆ip地址的文件。我想让我的sed命令删除其中的前两个八位字节。 例如,Regex sed从ip中删除前两个八位字节,regex,bash,networking,sed,Regex,Bash,Networking,Sed,我有一个包含一堆ip地址的文件。我想让我的sed命令删除其中的前两个八位字节。 例如,172.0.0.1应更改为XXX.ZZZ.0.1 我现在已经删除了最后的八位字节,并用一个x替换它 sed-i的/\(\([0-9]\{1,3\}.\)\{3\})[0-9]\{1,3\}/\1XXX/g'${file} 这在bash脚本中运行,该脚本将包含ip地址的文件作为输入参数 我还没有弄清楚如何使用sed来实现这一点,因此我将非常感谢您的帮助。您似乎可以使用 sed -i.bak -E 's/\b([0
172.0.0.1
应更改为XXX.ZZZ.0.1
我现在已经删除了最后的八位字节,并用一个x替换它
sed-i的/\(\([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
-两次出现(第1组)一到三位数字和一个点([0-9]{1,3}\){2}
-(第2组)一到三位,a([0-9]{1,3}.[0-9]{1,3})
和1到3位
-单词边界\b
\2
)。-i.bak
将在文件中进行替换,并生成扩展名为.bak的原始副本
请参阅。尝试卓越,使用-i和要替换ip的文件作为参数,这就像一个魅力!s/删除/修订/