私のsyslogからこの出力があるとしましょう、
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から一致するものを反転できる方法はありますか?どういうわけか、ファイルにパイプできますか?
sed -e '/^precalculated/!s/^\(.\{47\}\).*$/\1/' < h
これにより、先頭のprecalculated
と一致しない行の最初の47文字が保持されます。一致する行がコピーされます。
私はこのパターンを見つけました:
sed -e 's/^\(..\s.\{45\}\).*/\1/'
スペースで区切られた16進数字のペアの最初のシーケンスを置換グループに一致させ、そのグループを再置換することができます。
sed -r 's/^(([[:xdigit:]]{2}\s+)+).*$/\1/'