Oneline文件监控

时间:2015-05-12 15:52:56

标签: bash curl awk

我有一个日志文件不断填充。

我希望监视此文件,grep查找特定行,然后在curl命令中提取并使用该行的部分内容。

我查看了How to grep and execute a command (for every match)

这可以在脚本中使用,但我想知道是否可以使用xargs或其他东西使用下面的oneliner来实现这一点?

示例

Tue May 01|23:59:11.012|I|22|Event to process : [imsi=242010800195809, eventId = 242010800195809112112, msisdn=4798818181, inbound=false, homeMCC=242, homeMNC=01, visitedMCC=238, visitedMNC=01, timestamp=Tue May 12 11:21:12 CEST 2015,hlr=null,vlr=4540150021, msc=4540150021 eventtype=S, currentMCC=null, currentMNC=null teleSvcInfo=null camelPhases=null serviceKey=null gprsenabled= false APNlist: null SGSN: null]|com.uws.wsms2.EventProcessor|processEvent|139

提取我想要的字段并用分号分隔它们:

tail -f file.log | grep "Event to process" | awk -F'=' '{print $2";"$4";"$12}' | tr -cd '[[:digit:].\n.;]'

卷曲命令,例如类似的东西:

http://user:pass@www.some-url.com/services/myservice?msisdn=...&imsi=...&vlr=...

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

tail -f file.log | grep "Event to process" | awk -F'=' '{print $2" "$4" "$12; }' | tr -cd '[[:digit:].\n. ]' |while read msisdn imsi vlr ; do curl "http://user:pass@www.some-url.com/services/myservice?msisdn=$msisdn&imsi=$imsi&vlr=$vlr" ; done