Command-Line

格式化長單行的命令輸出

  • February 16, 2021

我正在研究 Linux - 商業路由器之間的 vxlan 隧道。我需要調試一些介面設置。

該命令sudo ip -d link show DEV給了我一個很好的輸出,但輸出格式就像一個長的單行,如下所示。

katabey@leaf-1:mgmt:~$ sudo ip -d link show vxlan_10
11: vxlan_10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9216 qdisc noqueue master bridge state UNKNOWN mode DEFAULT group default qlen 1000
   link/ether 52:6d:3d:aa:b5:bf brd ff:ff:ff:ff:ff:ff promiscuity 1 minmtu 68 maxmtu 65535 
   vxlan id 10010 local 10.1.1.1 srcport 0 0 dstport 4789 nolearning ttl 64 ageing 300 udpcsum noudp6zerocsumtx noudp6zerocsumrx 
   bridge_slave state forwarding priority 8 cost 100 hairpin off guard off root_block off fastleave off learning off flood on port_id 0x8002 port_no 0x2 designated_port 32770 designated_cost 0 designated_bridge 8000.50:0:0:3:0:3 designated_root 8000.50:0:0:3:0:3 hold_timer    0.00 message_age_timer    0.00 forward_delay_timer    0.00 topology_change_ack 0 config_pending 0 proxy_arp off proxy_arp_wifi off mcast_router 1 mcast_fast_leave off mcast_flood on neigh_suppress on group_fwd_mask 0x0 group_fwd_mask_str 0x0 group_fwd_maskhi 0x0 group_fwd_maskhi_str 0x0 vlan_tunnel off isolated off addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535

有這樣的輸出會很棒

vxlan id 10010
local 10.1.1.1
srcport 0
dstport 4789

我記得幾年前我曾經一起工作的 Linux 系統工程師,command | python ...但我無法找到/呼叫該命令。(我已經安裝了 Python)。

歡迎任何其他解決方案(尤其是單襯裡)。

嘗試:

your-command |grep -Eo '(vxlan id|srcport|dstport) [0-9]+|local [0-9.]+'

這聽起來像是fmtcoreutils 的一部分命令的工作。

特別是,你會想要使用

-s,--split-only

分割長線,但不要重新填充

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