用什么格式化输出?

用什么格式化输出?

我正在尝试格式化以下命令的输出;

MYIP=(/sbin/ifconfig $(getnic) | awk '/inet/ { print $2 } ' | sed -e s/addr://); echo $MYIP

生成以下输出;

172.30.0.1 fe80::42:c5ff:fecd:f09f 172.31.0.1 fe80::42:47ff:fe57:2f0d 172.17.0.1 fe80::42:a1ff:fe4e:2508 127.0.0.1 ::1 fe80::2887: fcff:fe19:e54b fe80::bc99:3aff:fe46:dcab fe80::b090:4cff:fecb:3dc4 fe80::9c0f:6dff:fe6b:6c71 fe80::808f:5fff:febb:2669 fe80::f851: 23ff:fee4:c87a fe80::4c97:24ff:fe04:ea02 fe80::4cde:e2ff:feb7:4784 fe80::c4fc:4aff:fe67:1863 192.168.1.134 fe80::d1f1:947f:9370:74ca

如何让它看起来更好,只是将每个 ipadress 放在单独的行上?

编辑:澄清;现在我只想将所有 ip 放在单独的一行上,每个 ip 一个。去掉 v6 的数字固然不错,但 htatäs 确实不重要。不过,这将是一个额外的好处。

我尝试过 tr、sed、awk,但我想我做错了什么或使用了错误的命令。我的想法只是在末尾添加另一个管道,以实现某种文字争论的魔力。

编辑:这是完整的功能;

function myip() {
    MY_IP=$(/sbin/ifconfig $(getnic) | awk '/inet / { print $2 } ' | sed -e s/addr://| sort)
    echo -e ${MY_IP:-"Not connected"}
}

但它仍然不会打印换行符。正在努力。感谢所有输入

答案1

将其添加到您现在拥有的命令字符串的末尾:

| tr ' ' '\n' 

它用换行符替换空格字符。

答案2

echo- 语句替换为

printf '%s\n' ${MY_IP:-"Not connected"}

你应该表现得很好。

printf将评估格式字符串'%s\n'的所有参数,从而在您提供的每个字符串后打印一个换行符。

相关内容