Bash

Shell腳本,從“MAC:”之後的命令控制台輸出中獲取/提取mac地址

  • March 27, 2020

我正在嘗試使用 shell 腳本自動提取 arduino 設備的 mac 地址,並且需要一些幫助來執行此操作。

這是命令返回的輸出:

Opening /dev/cu.SLAB_USBtoUART @ 115200...
Connecting to ESP32 ROM, attempt 1 of 10...
Connecting to ESP32 ROM, attempt 2 of 10...
 Connected, chip: ESP32D0WDQ5 R1
efuse_wr_disable     : 0x0084
efuse_rd_disable     : 0x1
flash_crypt_cnt      : 0x01 (WD)
WIFI_MAC_Address     : 0xaaaaaaaaaaaaaa (MAC: aa:bb:cc:dd:ee:ff)
SPI_pad_config_hd    : 0x0
chip_package         : 0x1
cpu_freq_low         : 0x0

我能夠將其擷取到 shell 腳本變數中,但是很難嘗試僅提取aa:bb:cc:dd:ee:ff

輸出將始終完全相同,(MAC:後跟組成 mac 地址的 17 個字元,然後是結束)

有人可以幫我一個命令,我可以在所有這些輸出都儲存在其中的變數上使用,以獲取aa:bb:cc:dd:ee:ff部分嗎?我一直在尋找和嘗試幾個小時沒有運氣,謝謝!

你可以試試awk

my_command_with_output | awk -F'[()]' '/^WIFI_MAC_Address/{sub(/^.*: /,"");print $1}'

你可以把它放在一個變數中

variable=$(my_command_with_output | awk -F'[()]' '/^WIFI_MAC_Address/{sub(/^.*: /,"");print $1}')

列印出變數的內容。

echo "$variable"

輸出

aa:bb:cc:dd:ee:ff

如果我理解正確:

echo "$var" |  grep -o "..:..:..:..:.."

輸出:

aa:bb:cc:dd:ee:ff

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