#!/bin/bash
# 运行ifconfig命令并将结果存储到变量中
ifconfig_output=$(ifconfig)
# 使用grep -oE 命令从ifconfig输出中提取 inet addr:192.168.1.1
ip_line=$(echo "$ifconfig_output" | grep -oE 'inet (addr:)?([0-9]*\.){3}[0-9]*')
#提取IP地址192.168.1.1
ip_address=$(echo "$ip_line" | grep -oE '([0-9]*\.){3}[0-9]*')
# 输出IP地址
echo "IP地址: $ip_address"
grep -oE
是一个在 Linux 或 Unix 系统中常用的命令,用于对文件内容进行模式(pattern)匹配。-o
参数表示仅输出与模式匹配的部分,-E
表示使用扩展的正则表达式。
如果你想使用 grep -oE
来获取 IP 地址,可以使用以下正则表达式:
grep -oE '(([0-9]{1,3}\.){3}[0-9]{1,3})'
这个正则表达式解释如下:
-
([0-9]{1,3}\.){3}[0-9]{1,3}
:匹配一个 IP 地址,其由四部分组成,每部分是 1 到 3 位数字,并且每部分之后都有一个点(.
)。 -
(([0-9]{1,3}\.){3}[0-9]{1,3})
:由于grep -o
只输出匹配的部分,所以我们需要使用一对括号()
将整个 IP 地址作为一个整体。