Regex 通过控制台从日志文件中删除IP地址

Regex 通过控制台从日志文件中删除IP地址,regex,bash,sed,scripting,data-manipulation,Regex,Bash,Sed,Scripting,Data Manipulation,我试图从日志文件中删除一些包含IP地址的行。我目前正在使用sed命令使用bash脚本。我在Ubuntu 16.04上运行它。 日志文件具有此格式 ... //data type 1 ... //data type 2 0.0.0.0 //IP 1 ... ... 127.0.0.1 //IP 2 等等。 我正在运行的命令是 sed 's/\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b//g' input.

我试图从日志文件中删除一些包含IP地址的行。我目前正在使用sed命令使用bash脚本。我在Ubuntu 16.04上运行它。 日志文件具有此格式

...        //data type 1
...        //data type 2
0.0.0.0    //IP 1
...
...
127.0.0.1  //IP 2
等等。 我正在运行的命令是

sed 's/\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b//g' input.txt > output.txt

以及其他一些变体

但什么也没发生

问题是在regex tester网站(如regextester.com)中,表达式实际上证明了我想要消除的IP地址


有人能给我一个提示吗

注意这里什么都没有发生:

$ sed 's/\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b//g' input.txt
...        //data type 1
...        //data type 2
0.0.0.0    //IP 1
...
...
127.0.0.1  //IP 2
然而,在这里,
sed
成功地删除了IP:

$ sed -E 's/\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b//g' input.txt
...        //data type 1
...        //data type 2
    //IP 1
...
...
  //IP 2
-E
打开扩展正则表达式

或者,如果对
{
进行转义,则可以成功使用带有基本正则表达式的sed(即不使用
-E
):

$ sed  's/\b[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\b//g' input.txt
...        //data type 1
...        //data type 2
    //IP 1
...
...
  //IP 2
\b
功能是GNU扩展。它可能在其他版本的sed中不存在

简化 上面的正则表达式涉及大量重复。这可以减少如下:

$ sed -E 's/[0-9]{1,3}(\.[0-9]{1,3}){3}//g' input.txt
...        //data type 1
...        //data type 2
    //IP 1
...
...
  //IP 2
兼容性说明 对于GNU sed的旧版本,您可能需要使用
-r
代替
-E


\b
for boundary受GNU sed支持,其他版本可能不支持。

前导词boundary是
\
,相应地替换这两个
\b
s。我自己找到了解决方案,但就是这样!我使用了sed-r'....,谢谢您的回复!
$ sed -E 's/[0-9]{1,3}(\.[0-9]{1,3}){3}//g' input.txt
...        //data type 1
...        //data type 2
    //IP 1
...
...
  //IP 2