我想逐行打印包含键值的json文件的每个路径和值。我希望输出以逗号分隔,或者至少很容易使用 Linux 命令行工具进行剪切和排序。鉴于以下json和jq,我已经获得了jq代码,它似乎是为测试 JSON 执行此操作的,但我不确定它在所有情况下都有效或者是正确的方法。
jq中有一个函数可以自动执行此操作吗?如果没有,是否有“最简洁的最佳方法”来做到这一点?
我的愿望是这样的:
$ cat short.json | jq -doit '.'
Reservations,0,Instances,0,ImageId,ami-a
Reservations,0,Instances,0,InstanceId,i-a
Reservations,0,Instances,0,InstanceType,t2.micro
Reservations,0,Instances,0,KeyName,ubuntu
Run Code Online (Sandbox Code Playgroud)
测试 JSON:
$ cat short.json | jq '.'
{
"Reservations": [
{
"Groups": [],
"Instances": [
{
"ImageId": "ami-a",
"InstanceId": "i-a",
"InstanceType": "t2.micro",
"KeyName": "ubuntu"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
推荐代码:
https://unix.stackexchange.com/questions/561460/how-to-print-path-and-key-values-of-json-file
支持: https:
//unix.stackexchange.com/questions/ 515573/convert-json-file-to-a-key-path-with-the-resulting-value-at-the-end-of-each-k
JQ 代码 太长且复杂!
jq -r '
paths(scalars) as $p
| [ ( [ $p[] | tostring ] …
Run Code Online (Sandbox Code Playgroud) 我正在尝试确定什么 Powershell 命令等效于以下 Linux 命令,用于在合理的时间内创建具有确切大小并填充给定文本输入的大文件。
鉴于:
$ cat line.txt
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZZZZ
$ time yes `cat line.txt` | head -c 10GB > file.txt # create large file
real 0m59.741s
$ ls -lt file.txt
-rw-r--r--+ 1 k None 10000000000 Feb 2 16:28 file.txt
$ head -3 file.txt
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZZZZ
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZZZZ
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZZZZ
Run Code Online (Sandbox Code Playgroud)
什么是最有效、最紧凑的 Powershell 命令,它允许我指定大小、文本内容并创建文件作为上面的 Linux 命令?谢谢!