<分区>
假设我从表达式中得到以下标准输出
Min 1st_Qu Median Mean 3rd_Qu Max NAs
1.000 1.000 2.000 1.875 2.250 3.000 1
目标是:
{ "Min":1.0, "1st_Qu":1.0, ..., "NAs":1 }
有没有一种简单的方法可以用 bash 做到这一点? (还试图限制依赖性,并且宁愿使用 awk 来挑选我需要的东西,而不是添加任何非本地 linux 依赖性)。
标签 linux bash awk command-line jq
<分区>
假设我从表达式中得到以下标准输出
Min 1st_Qu Median Mean 3rd_Qu Max NAs
1.000 1.000 2.000 1.875 2.250 3.000 1
目标是:
{ "Min":1.0, "1st_Qu":1.0, ..., "NAs":1 }
有没有一种简单的方法可以用 bash 做到这一点? (还试图限制依赖性,并且宁愿使用 awk 来挑选我需要的东西,而不是添加任何非本地 linux 依赖性)。
最佳答案
以下内容可能算作微不足道,但不会保留数字的精度。它假定分隔符是正则表达式“+”,但您可以轻松更改它,例如如果值分隔符是制表符,则为“\t”:
jq -n -R '[inputs | [splits(" +") | select(length>0)]]
| transpose | map({(.[0]): .[1]|tonumber}) | add'
下面假设一个jq -nR
调用:
def zip(headers):
. as $in
| reduce range(0; headers|length) as $i ({}; .[headers[$i]] = ($in[$i]) );
def s2a: [splits(" +") | select(length>0)];
(input | s2a) as $h
| inputs | s2a | map(tonumber) | zip($h)
关于linux - 如何使用 Bash 将柱状标记数据转换为 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57913058/