MACのすべてのバイトの前にゼロがあるようにMACアドレスとIPペアを再フォーマットするにはどうすればよいですか?

MACのすべてのバイトの前にゼロがあるようにMACアドレスとIPペアを再フォーマットするにはどうすればよいですか?

次の表があります。

10.6.6.12 0:50:56:9b:a6:2

10.6.6.13 fe:9:31:b6:71:1d

私は次のことを持っている必要があります:

10.6.6.12,00:50:56:9b:a6:02

10.6.6.13,fe:09:31:b6:71:1d

Aは0常にMACアドレスの「別名」文字の前に追加されます。私は良い結果が得られずに次のことを試しました。

rpl -i ":a:" ":0a:" file.txt

ベストアンサー1

cat /path/to/table | sed 's/\([ :]\)\([0-9a-f]:*\)/\10\2/g'

上記のトリックが必要です。この式を解釈するには、次の手順に従ってください。

  • \([ :]\)- 角括弧はエスケープする必要がありますsed。これはスペースやコロンと一致し、次のようになります。
  • \([0-9a-f]:*\)- 16進数の後に0個以上のコロンが続く場合:

次に置き換えられます:

  • \1- 最初のグループ(スペースまたはコロン)
  • 0- 数字0
  • \2- 2番目のグループ(単一の数字が見つかり、コロンがある場合)

ユースケースの例:

$ echo "1.2.3.4 5:3d:c:12:3" | sed 's/\([ :]\)\([0-9a-f]:*\)/\10\2/g'
1.2.3.4 05:3d:0c:12:03

おすすめ記事