MACアドレスベンダー(最初の3つの部分)

MACアドレスベンダー(最初の3つの部分)

MACアドレスから最初の3つの部分をどのように取得しますか?

$ 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。正しい構文は何ですか?

これは機能しますが、次の2つの作業が必要です。

vendor=${mac//:/}
vendor=${vendor:0:6}
echo $vendor
112233

1行のbashでこれを行うことはできますか?

GNU bashのバージョンは5.1.0です。

ベストアンサー1

bashすでにソリューションがあり、2つの割り当てが必要ですが、出力のみが必要な場合は、入れ子になったパラメータ置換はまだサポートされていないため(おそらく将来サポートされる予定です)、2番目の割り当てを省略して結果を直接出力できますbash

$ mac='11:22:33:44:55:66'
$ vendor=${mac//:}
$ echo ${vendor::6}

またはcut簡単に:

cut -d: -f1,2,3 --output-delimiter= <<<"$mac"

おすすめ記事