Bash
來自 MAC 地址的供應商(前三部分)
如何從 MAC 地址中獲取前三部分?
$ mac=11:22:33:44:55:66 $ vendor=${${mac//:/}:0:6} bash: ${${mac//:/}:0:6}: bad substitution
${mac//:/}
刪除:
並:0:6
應該獲得前 6 個字元?或其他方式:
vendor=${${mac:0:8}//:/} bash: ${${mac:0:8}//:/}: bad substitution
預期:
112233
。什麼是正確的語法?這有效,但需要兩個任務:
vendor=${mac//:/} vendor=${vendor:0:6} echo $vendor 112233
你能用只有 bash 的一行來做到這一點嗎?
GNU bash 版本是 5.1.0
你已經有了
bash
解決方案,它需要兩個賦值,但如果你只需要輸出,你可以省略第二個賦值並直接輸出結果,因為bash
還不支持嵌套參數替換(也許將來會支持)。$ mac='11:22:33:44:55:66' $ vendor=${mac//:} $ echo ${vendor::6}
或
cut
簡稱為:cut -d: -f1,2,3 --output-delimiter= <<<"$mac"
您也可以使用
awk
:$ mac=11:22:33:44:55:66 $ echo "$mac" | awk -F':' '{ print $1""$2""$3}' 112233
關於嵌套參數擴展,請檢查此答案: