Bash

遍歷 MAC 地址,如何在“for”循環中處理數字 (0-9) 和字母 (af)

  • July 14, 2021

我有這個程式碼的腳本

for i in {2..9}
       do 
       grep "Node${i}\|01, source address = 00:00:00:00:00:0${i}" t1.txt > t2.txt
       done

是否可以將循環從“9”擴展到十六進制 MAC 地址的“f”字元,以便也處理“a”到“f”的情況?

只需為字母添加另一個大括號擴展:

for i in {2..9} {a..f}
do 
   grep "Node${i}\|01, source address = 00:00:00:00:00:0${i}" t1.txt > t2.txt
done

請注意,這可能不是您真正想要的。每次執行此程式碼時,它都會覆蓋其中的內容,t2.txt這意味著您只會看到最終迭代的結果。如果不匹配,即使其他內容匹配,您也會有一個空文件。也許你想追加:

for i in {2..9} {a..f}
do 
   grep "Node${i}\|01, source address = 00:00:00:00:00:0${i}" t1.txt >> t2.txt
done

或者,更有可能的是,您根本不需要循環,而是應該這樣做:

grep -E 'Node[2-9a-f]|01, source address = 00:00:00:00:00:0[2-9a-f]' t1.txt > t2.txt

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