16進数8桁だけを変更してください。 8桁未満または多い場合は無視してください。 sed コマンドの使用

16進数8桁だけを変更してください。 8桁未満または多い場合は無視してください。 sed コマンドの使用

例:


入力する:

0x12345678 0aef1234 0098adefa 123456789 

予想出力:

0x00000000 00000000 0098adefa 123456789

これを試しました:

sed -E "s/[0-9a-fA-F]{8}/00000000/g" 

ただし、16進数が8個以上連続しても置換されます。

ベストアンサー1

単語の境界を使用して単語の始まりまたは終わりを表示することができ、数字の前に来ることもできることを検討し\bてください。0x

sed -E 's/\b(0x|)[0-9a-fA-F]{8}\b/\100000000/g'

それでもいくつかの特別なケースがあるので、これを処理する方法を検討する必要があります。たとえば、00x12345678上記のパターンでは置き換えられません。

おすすめ記事