Bash

用什麼格式化輸出?

  • October 24, 2019

我正在嘗試格式化以下命令的輸出;

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',因此在您輸入的每個字元串之後列印一個換行符。

引用自:https://unix.stackexchange.com/questions/548427