AWK命令从提供的图案中打印以下图案

时间:2019-11-06 19:17:52

标签: linux bash unix awk

我的模式如下:

Unix文件中的模式: {1.11.111.111 - 2017-10-06T00:00:00+00:00 111111 1 302 "GET /abcd/z1/bcdfgggg?values" uri="/abcd/v2/nano" 111 111 0 "-" "abcd/2.1.0 (Linux; U; Android 8.1.0; Redmi Note 6 Pro MIUI/V10.2.2.0.bcdwvc)" "1111:1111:111:1111:11:d11e:c11c:111a" cu=0.011 nano=0.011 var="-12345" "1111:1111:111:1111:11:d11e:c11c:111a, 11.111.111.111"}

我正在尝试打印以下结果,但结果未按预期打印。

代码: Cat test.txt | awk -F'"' '{ print $1,$9}' |awk -F' ' '{ print $3,$6,$24}'

实际结果2017-10-06T00:00:00+00:00 302

预期结果2017-10-06T00:00:00+00:00 302 cu=0.011

2 个答案:

答案 0 :(得分:2)

使用GNU sed和带有三个反向引用的正则表达式:

sed -r 's/.* ([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9:+]{14}) [0-9]+ [0-9]+ ([0-9]{3}) .*(cu=[0-9.]+).*/\1 \2 \3/' file

输出:

2017-10-06T00:00:00+00:00 302 cu=0.011

请参阅:The Stack Overflow Regular Expressions FAQ

答案 1 :(得分:2)

假设日志条目总是 由OP呈现:

test_target

输出:def abc(): a = some_other_function() b = some_other_functipn_2(a) test_target(b)