linux cat 将两个文件作为一个文件回显
linux cat echo two files as one
我想从命令行为两个 .json 文件执行此操作:
#echo '[' . (cat file1.json) . ',' . (cat file2.json) . ']'
但这显然是伪代码。我该怎么做?
{ cat file1.json ; echo ','; cat file2.json; }
echo "[ $(cat file1.json) , $(cat file2.json) ]"
只要文件本身有效就可以工作json
您不太清楚您想要的最终结构是什么,但让我尽力提供帮助。
我假设你有 2 个文件只包含有效的 json 并且从你的问题中猜测你想将这两个文件打印为数组的成员。
为了举例,我假设 file1.json
看起来像这样:
{"name":"object1"}
并且 file2.json
像这样:
{"name":"object2"}
这可以用 jq
来完成,这是一个非常有用的工具,用于解析 JSON 流,使用 -s/--slurp
选项,它将整个输入流读入一个缓冲区而不是处理每个对象分开。它具有将对象组合成数组的额外好处。我们可以使用默认的 'passthrough' 过滤器 '.'
并将两个文件通过管道传输到一个数组中。
cat file1.json file2.json | jq --slurp '.'
将输出:
[
{
"name": "object1"
},
{
"name": "object2"
}
]
如果你想在一个对象中使用该数组,你可以使用过滤器 {"array":.}
我强烈建议 jq
用于您计划从 shell 进行的任何 JSON 交互,但如果您不能,并且必须使用内置函数,您可以像这样拼凑一些东西:
echo '['"$(cat file1.json)"','"$(cat file2.json)"']'
此解决方案使用 subshells $()
来执行其中的命令并将其输出包含在 echo 中。
我再次重申,使用jq
。它更干净,更坚固,并确保输入和输出有效JSON。
我想从命令行为两个 .json 文件执行此操作:
#echo '[' . (cat file1.json) . ',' . (cat file2.json) . ']'
但这显然是伪代码。我该怎么做?
{ cat file1.json ; echo ','; cat file2.json; }
echo "[ $(cat file1.json) , $(cat file2.json) ]"
只要文件本身有效就可以工作json
您不太清楚您想要的最终结构是什么,但让我尽力提供帮助。
我假设你有 2 个文件只包含有效的 json 并且从你的问题中猜测你想将这两个文件打印为数组的成员。
为了举例,我假设 file1.json
看起来像这样:
{"name":"object1"}
并且 file2.json
像这样:
{"name":"object2"}
这可以用 jq
来完成,这是一个非常有用的工具,用于解析 JSON 流,使用 -s/--slurp
选项,它将整个输入流读入一个缓冲区而不是处理每个对象分开。它具有将对象组合成数组的额外好处。我们可以使用默认的 'passthrough' 过滤器 '.'
并将两个文件通过管道传输到一个数组中。
cat file1.json file2.json | jq --slurp '.'
将输出:
[
{
"name": "object1"
},
{
"name": "object2"
}
]
如果你想在一个对象中使用该数组,你可以使用过滤器 {"array":.}
我强烈建议 jq
用于您计划从 shell 进行的任何 JSON 交互,但如果您不能,并且必须使用内置函数,您可以像这样拼凑一些东西:
echo '['"$(cat file1.json)"','"$(cat file2.json)"']'
此解决方案使用 subshells $()
来执行其中的命令并将其输出包含在 echo 中。
我再次重申,使用jq
。它更干净,更坚固,并确保输入和输出有效JSON。