循环访问 MAC 地址,如何在“for”循环中同时处理数字 (0-9) 和字母 (af)

tes*_*man -1 bash shell-script mac-address for

我有一个带有此代码的脚本

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

是否可以将循环从“9”扩展到十进制 MAC 地址的“f”字符,以便处理“a”到“f”的情况?

ter*_*don 8

只需为字母添加另一个大括号扩展:

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
Run Code Online (Sandbox Code Playgroud)

请注意,这可能不是您真正想要的。每次运行此代码时,它都会覆盖其中的内容,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
Run Code Online (Sandbox Code Playgroud)

或者,更有可能的是,您根本不需要循环,而应该这样做:

grep -E 'Node[2-9a-f]|01, source address = 00:00:00:00:00:0[2-9a-f]' t1.txt > t2.txt
Run Code Online (Sandbox Code Playgroud)