shell脚本中编写匹配除了127.0.0.1之外的ip正则表达式
时间: 2023-07-16 19:13:41 浏览: 105
可以使用以下正则表达式来匹配除了 127.0.0.1 之外的 IP 地址:
```
^(?!127\.0\.0\.1)(?:\d{1,3}\.){3}\d{1,3}$
```
这个正则表达式使用了负向前瞻,即 `(?!127\.0\.0\.1)`,表示不匹配 127.0.0.1。然后使用了非捕获分组 `(?:...)` 和 `\d{1,3}` 来匹配 IP 地址中的数字部分。
在 shell 脚本中可以使用 grep 命令来进行匹配,例如:
```bash
ip="192.168.0.1"
if echo "$ip" | grep -Eq '^(?!127\.0\.0\.1)(?:\d{1,3}\.){3}\d{1,3}$'; then
echo "匹配成功"
else
echo "匹配失败"
fi
```
相关问题
shell脚本中编写匹配除了127.0.0.1之外的ip
可以使用grep命令结合正则表达式来过滤出除了127.0.0.1之外的IP地址,示例如下:
```shell
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Ev '127.0.0.1'
```
解释:
- `ifconfig`命令用于获取网络接口信息
- `grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*'` 用于提取IP地址,匹配的正则表达式可以匹配IPv4地址,但是会包含`inet addr:`前缀,所以加了一个`?`表示该前缀可选
- `grep -Ev '127.0.0.1'` 用于过滤掉127.0.0.1地址,其中`-v`表示反向匹配,即只匹配不包含该模式的行。
一个正则表达式,能匹配ip 127.0.0.1,
匹配 IP 地址的正则表达式如下:
```
^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
```
其中,`127.0.0.1` 是符合该正则表达式的 IP 地址之一。
解释如下:
- `^`:表示匹配字符串的开始位置。
- `(25[0-5]|2[0-4]\d|[01]?\d\d?)`:表示匹配一个数字,可能是 0 到 255 之间的数字。
- `\.`:表示匹配一个点号。
- `{3}`:表示前面的表达式重复 3 次,匹配 IP 地址的前三个数字。
- `(25[0-5]|2[0-4]\d|[01]?\d\d?)`:表示匹配一个数字,可能是 0 到 255 之间的数字,匹配 IP 地址的第四个数字。
- `$`:表示匹配字符串的结束位置。
因此,以上正则表达式可以匹配符合 IP 地址规范的所有 IP 地址,包括 `127.0.0.1`。