linux - 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
解决方案
使用 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 立方=0.011
请参阅:堆栈溢出正则表达式常见问题解答
推荐阅读
- airflow - catchup=false 的意外 Dag 计划
- java - 无法在 Java8 中将悉尼转换为布里斯班 LocalDateTime
- ruby-on-rails - 如何使定义影响 rails-webpacker-managed js 中的全局范围?
- c++ - 如何导出函数内向量的大小?(向量通过指向其第一个元素的指针传递)
- javascript - 动态表在 FORM 文本字段中选中显示值时单击关联行的复选框以进行编辑
- javascript - 如何更改两个不同类型输入标签的值。以便该值始终与实时相同?
- mongodb - MongoDB 3.6-如何将匹配项从一个集合附加到另一个集合?
- html - IE 没有正确显示带有对象标签的 PDF
- aem - AEM 标签未按正确顺序显示
- python-3.x - 遍历所有记录,直到到达文件并输入到 sqlite