Linux IP 和可选 CIDR 的 Grep 或 Sed 正则表达式
Linux Grep or Sed Regular Expression for IP and optional CIDR
想知道是否有人可能知道一种简单的方法来一次 grep CIDR 形式的 IP 和 IP
预期输出:
78.0.0.0/8
136.144.199.198
当前输出:
78.0.0.0
136.144.199.198
这是我当前的正则表达式:
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\/[0-9]\{1,\}'
这看起来可行,但似乎只适用于 perl
^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
我看到三种方式:
对 perl 正则表达式使用 -P
选项:
grep -Po '([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]|[1-2][0-9]|3[0-2])?' file
相同的正则表达式也适用于 -E
选项:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]|[1-2][0-9]|3[0-2])?' file
或转义所有特殊字符:
grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\(\/[0-9]\|[1-2][0-9]\|3[0-2]\)\?' file
所有这些命令给出相同的结果:
78.0.0.0/8
136.144.199.198
想知道是否有人可能知道一种简单的方法来一次 grep CIDR 形式的 IP 和 IP
预期输出:
78.0.0.0/8
136.144.199.198
当前输出:
78.0.0.0
136.144.199.198
这是我当前的正则表达式:
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\/[0-9]\{1,\}'
这看起来可行,但似乎只适用于 perl
^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$
我看到三种方式:
对 perl 正则表达式使用 -P
选项:
grep -Po '([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]|[1-2][0-9]|3[0-2])?' file
相同的正则表达式也适用于 -E
选项:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]|[1-2][0-9]|3[0-2])?' file
或转义所有特殊字符:
grep -o '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\(\/[0-9]\|[1-2][0-9]\|3[0-2]\)\?' file
所有这些命令给出相同的结果:
78.0.0.0/8
136.144.199.198