Bash
用什麼格式化輸出?
我正在嘗試格式化以下命令的輸出;
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放在單獨的一行上,每個一個。去掉 v6 數字是沒有必要的,但 htatäs 真的不重要。雖然會是一個bonux。
我嘗試過使用 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"} }
但它仍然不會列印換行符。正在努力。感謝所有輸入
將此添加到您現在擁有的命令字元串的末尾:
| tr ' ' '\n'
它用換行符替換空格字元。
echo
將- 語句替換為printf '%s\n' ${MY_IP:-"Not connected"}
你應該很好。
printf
將評估其所有參數的格式字元串'%s\n'
,因此在您輸入的每個字元串之後列印一個換行符。