我正在尝试使用 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
。$1
如awk
您所知,接口名称和 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"