MACアドレスを介したループ、「for」ループ内の数字(0〜9)、および文字(af)を処理する方法

MACアドレスを介したループ、「for」ループ内の数字(0〜9)、および文字(af)を処理する方法

このコードを含むスクリプトがあります。

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

「a」から「f」までの場合も処理されるように、ループを「9」から16進MACアドレスの「f」文字に拡張できますか?

ベストアンサー1

文字に別の中かっこ拡張を追加するだけです。

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

おすすめ記事