作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我对 AWK 有疑问,我需要解析一些文本,但我不知道如何递归解析。
我有这个:
awk '/^tags: /{p=$2} /^[0-9]* /{v=$2} /^$/{print ""p" "v""}'
但是那只解析第一个合规性,我需要所有匹配。
输入(sensorId可以大于2):
name: temperature
tags: sensorId=1
time last value
---- ---- -----
1593531518973361030 40.125 40.125
name: temperature
tags: sensorId=2
time last value
---- ---- -----
1593531338178622316 -0.062 -0.062
我想要输出:
1 40.125
2 -0.062
或
sensorId=1 40.125
sensorId=2 -0.062
我使用 mawk
最佳答案
问题是你只在有空行时打印。最后一次出现后没有空行,只有文件末尾。您可以将其与 END
相匹配。
awk '/^tags: /{p=$2} /^[0-9]* /{v=$2} /^$/{print p, v} END {print p, v}'
另一种选择是在匹配第二行时立即打印这两个值。
awk '/^tags: /{p=$2} /^[0-9]* /{print p, $2}'
关于bash - 我如何为多行中的所有匹配制作 AWK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62661294/
我是一名优秀的程序员,十分优秀!