我有以下问题:
*我想要一个带有密钥的JSON文件,{“key1”,“key2”}每个都有几个值,并写在一个txt文件中。每个键的txt文件如下所示:
x
和key2.txt的类似结构。使用这些我想创建一个具有以下结构的json文件:
key1.txt:
val1
val2
val3
..
我希望问题很清楚。如果可能的话,我更喜欢用bash来做这件事。
答案 0 :(得分:0)
尝试以下
#!/bin/bash
json="{"
for f in <path of directory>/*.txt
do
filename=$(basename "$f")
filename="${filename%.*}"
json=$json'"'$filename'"'": ["
while IFS= read -r line; do
echo $filename
json=$json'"'$line'",'
done < $f
json="${json%?}"
json=$json"],"
done
json="${json%?}"
json=$json"}"
echo $json
答案 1 :(得分:0)
jq可用于使用--slurpfile
选项读入多个文件。但文件必须是一个实际的json文件。由于您的文件不是json格式,因此您需要转换它们。
$ jq -R '.' key1.txt > /tmp/key1.json && \
jq -R '.' key2.txt > /tmp/key2.json && \
jq --slurpfile key1 /tmp/key1.json \
--slurpfile key2 /tmp/key2.json \
-n '{ key1: $key1, key2: $key2 }'
否则,如果您不想处理临时文件,可以使用子shell创建json数组并使用--argjson
传递它们。
$ jq --argjson key1 "$(jq -R '.' key1.txt | jq -s '.')" \
--argjson key2 "$(jq -R '.' key2.txt | jq -s '.')" \
-n '{ key1: $key1, key2: $key2 }'