sedで逆方向一致、見つかった反対の項目を置き換える

sedで逆方向一致、見つかった反対の項目を置き換える

私のシステムログに次のような出力があるとします。

precalculated src_hash => 20 bytes @ 0x7f811c001e20
A6 2D E5 CD 2A BA F0 42 56 66 19 D4 61 1A E3 A0  .-..*..BVf..a...
C7 5E 5F 77                                      .^_w
precalculated dst_hash => 20 bytes @ 0x7f811c0020d0
15 EC 34 59 89 0F 4F F8 C5 68 3A DC BB 09 27 91  ..4Y..O..h:...'.
5D C1 E7 28                                      ]..(

私の目標は、右側のASCIIゴミを削除し、ハッシュされた16進バイトのみを残し、変数名で始まる行を保存することです。私が使用する正規表現は

(^([a-zA-Z_]+\s+)+[=]{1}) | (^([a-zA-Z0-9]{2}[\s]{1})+)

変数名またはその値を含む16進文字列で始まる行と正確に一致します。ストリームから「その他」のコンテンツを削除するためにsedが一致するアイテムを元に戻す方法はありますか?どういうわけかファイルに転送できますか?

ベストアンサー1

sed -e '/^precalculated/!s/^\(.\{47\}\).*$/\1/' < h

precalculatedこれにより、最初に一致しない行の最初の47文字が保持されます。一致する行は単にコピーされます。

おすすめ記事