0

次のようなログファイルがあります。

    2013-07-20 08:48:14-0400 [MODE LOG] Rec:'#A=1887283,FIG=18882734772,VA=772663777,T=333.4#\r\n'
    2013-07-20 08:52:34-0400 [MODE LOG] Rec:'#A=1889288,FIG=18882734772,VA=772663777,T=334.2#\r\n'
    2013-07-20 08:55:27-0400 [MODE LOG] Rec:'#A=1887283,FIG=18882732730,VA=772663777,T=335.0#\r\n'
    2013-07-20 08:58:11-0400 [MODE LOG] Rec:'#A=1887283,FIG=18882734772,VA=772663777,T=335.4#\r\n'
    2013-07-20 08:48:14-0400 [MODE LOG] Tas:'#STOPPED#\r\n'

と:

grep Rec STOM.log | grep 1887283 | grep 2013-07 | wc -c

7 月から A=1887283 レコードのバイトを取得できます。

しかし、実際には ' ' の間の文字列からのみ合計バイト数を取得する必要があり ます


仕方?UNIXツールのみで実行できますか、それともスクリプト言語が必要ですか? ありがとう。

4

3 に答える 3

2

コマンドをこれに変更します

grep Rec STOM.log | grep 1887283 | grep 2013-07 | grep -oh "'.*'" | wc -c

出力

165

'.*''との間のすべての文字に一致する正規表現です。'

于 2013-11-05T13:52:22.247 に答える
0

必要なデータだけを抽出

cat file |awk -F: '{ print $2 }'
于 2013-11-05T13:52:49.817 に答える
0

これは、bash を使用して以下のように行うことができます。

#!/bin/bash
while read str; do
found=''
regex="#A=(.*),F" # <#A= start string and  ,F end string>
[[ $str =~ $regex ]] && found="${BASH_REMATCH[1]}"
echo $found
done < input.txt

input.txtログファイルはどこにありますか。

于 2013-11-05T14:49:45.543 に答える