Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex sed从ip中删除前两个八位字节_Regex_Bash_Networking_Sed - Fatal编程技术网

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

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

我有一个包含一堆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-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的原始副本


请参阅。

尝试卓越,使用-i和要替换ip的文件作为参数,这就像一个魅力!s/删除/修订/