1

私はこのような行を持っています:

 22.665774 Fr RMSG  0 0 1 1 18 11 Rx 0 308002 5  20  1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81  1  40937

私はそれを解析し、この部分だけを取得するような方法で置き換えたい:

a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc

現時点で私はこれを使用しています:

sed -re \"s/^.+x//\

しかし、これは x の前の部分しか教えてくれません。ヒントを教えてください。

ありがとう 。

4

4 に答える 4

0

この式を使用して、行全体を照合し、文字列 aftex を取得できますx <hex> <hex>

.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*

これは、文字列の残りを切り取る区切り文字が常にあることを前提としてxいます。

編集

コマンドラインでこれを行う完全なコマンド:

echo " 22.665774 Fr RMSG  0 0 1 1 18 11 Rx 0 308002 5  20  1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81  1  40937" | perl -pe "s/.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*/\1/"
于 2013-05-31T11:35:55.870 に答える
0

私はsedに精通していませんが、これは一般的な正規表現の場合に当てはまります:

この正規表現は、16 進バイト (小文字のみ) とスペースの任意の組み合わせである文字列"a8 ... fc"に一致します。"..."

/a8([0-9a-f ]+)fc/

次に、次を使用して同じ正規表現で置換を使用できます。

/a8$1fc/

ここで$1は、括弧内の一致で置換されます([0-9a-f ]+)

于 2013-05-31T11:36:49.730 に答える
0

それはsedである必要がありますか?cutそれを完璧にします。

echo '22.665774 Fr RMSG  0 0 1 1 18 11 Rx 0 308002 5  20  1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81  1  40937' | cut -d' ' -f22-53
于 2013-05-31T11:29:25.177 に答える