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 记录的字节。

但我真的需要只从''之间的字符串中获取总字节数,
例如:'#A=1887283,FIG=18882734772,VA=772663777,T=335.4#\r\n'

我怎样才能做到最好方法?我可以只使用 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 回答