使用 awk 解析多行条件?(ifconfig 输出)

使用 awk 解析多行条件?(ifconfig 输出)

我正在尝试使用 awk 解析 ifconfig 输出。

现在我的脚本是:

# Setup

ifconfig > ip.txt

ans=$(cat ip.txt | awk '$1 == "inet" {print $2}')

#output

echo "Here are your IPs:"

echo"$ans"

输出:

Here are your IPs:

192.168.1.1
192.168.2.1

我想要的是更像

Here are your IPs: 

eth0 192.168.1.1
wlan0 192.168.2.1

awk只能按行解析,这就是我使用 的原因inet$1awk您所知,接口名称和 IP 地址之间有多行,因此无论地址ifconfig有多少个字,我都无法将其增加到这个数字。$2

我认为解决方案与使用RS或可能使用sed有关awk。使用无法RS改变awk线条的显示方式。

在此先感谢您的帮助。

答案1

好吧,如果真的想使用 ifconfig,你可以这样做:

# Setup
ifconfig > ip.txt

# Parse the output
ans=$(cat ip.txt | awk '/^[^ ]/{iface=$1} /inet / {print iface, $2}')

# Output
echo "Here are your IPs:"
echo "$ans"

相关内容