我正在尝试获取文件中出现的文本数。为此,我使用了以下命令:
grep FAIL $sPath/FTM.FC*$yesterday* |awk -F ":" '{print $7}' | awk '{print $1}' |awk '{if ($1 == "userNotReachable"){cnt++;} ;{print cnt} };'
第一部分:
grep FAIL $sPath/FTM.FC*$yesterday* |awk -F ":" '{print $7}' | awk '{print $1}'
我正在过滤输出以仅获得一列。.然后检查该列是否等于搜索的文本“ userNotReachable ”。如果为true,则增加计数器,稍后我想将计数器的值打印到文本文件中
这是示例源文件内容,它是错误日志:
2019-01-03 19:29:59.923 FAIL RETRY: Failed for request id: 14899507 Cause: userNotReachable Info: <undef> Code: 27,USSD RequestId=14899507 OriginalId=14899507 EventCorrelationId="1211005491|245065451||1546527554000" CreationTime="20190103192959" ResendCount=0 Timestamp=1546527599482 (Thu Jan 03 19:29:59 AFT 2019) State=STATE_SENT SubscriberNumber=708023643 UssdText=Last event was charged 0.04 MB from 1GB Monthly, Remaining data 421.95 MB (Exp 12.01.2019)1500 AFS = 32GB valid 30 Days, Dial *477*32*1#. NumberingPlan=1 Nadi=4 UssdFormat=2
我想统计几种错误原因,例如:
userNotReachable
unknown
equipmentFailure
timeout
userBusy
userNotReachable
userUnavailable
并将每个错误的计数打印到文本文件中
答案 0 :(得分:2)
您似乎在这里进行了大量的管道布置。您可以只用一个awk来做到这一点:
sed 's/.*value="\([^"]*\)".*/\1\n/g'
更新后,您可能需要执行以下操作:
awk -F ":" '/FAIL/ && ($6 ~ / *userNotReachable /) {c++}END{print c}' $sPath/FTM.FC*$yesterday*