【发布时间】:2020-07-16 00:30:32
【问题描述】:
我有以下数据:
"b":1.14105,"a":1.14106,"x":48,"t":1594771200000
"a":1.141,"b":1.14099,"x":48,"t":1594771206000
...
我试图以给定的顺序显示数据,并且只显示三个字段。由于不能保证字段顺序,我需要为每行的每个逗号分隔列读取“标签”。
我已尝试使用awk 解决此任务:
awk -F',' '
{
for(i=1; i<=$NF; i++) {
if(index($i,"\"a\":")!=0) a=$i;
if(index($i,"\"b\":")!=0) b=$i;
if(index($i,"\"t\":")!=0) t=$i;
}
printf("%s,%s,%s\n",a,b,t);
}
'
但我明白了:
,,
,,
...
在上述数据样本中,我希望:
"a":1.14106,"b":1.14105,"t":1594771200000
"a":1.141,"b":1.14099,"t":1594771206000
...
注意:我使用的是 FreeBSD 附带的 awk
【问题讨论】:
-
之前是 JSON 吗?
-
也许这个答案可能有用:stackoverflow.com/a/59320486/8344060
-
@Cyrus 是的,它之前是 JSON(如果您有任何建议在命令行上解析 JSON 而不使用编程语言)
-
@M.E.:如果您有权访问
jq或perl,我建议使用有效的 JSON 文件开始一个新问题。 -
我绝对不想使用
perl我知道如何使用Python或Java但我试图避免通过简单的工具使用它们。如果您想帮助我将 JQ 合并到我的工具集中,这是 JQ 问题:stackoverflow.com/questions/62938833/…