【发布时间】:2023-03-18 21:05:02
【问题描述】:
我有 Json 文件,我正在尝试使用下面的方法解析它
#!/bin/ksh
while read rec
do
while read line
do
firstname=`echo $line | sed -n -e 's/^.*\(full-name\)/\1/p' | cut -f3 -d'"'`
id=`echo $line | sed -n -e 's/^.*\(id\)/\1/p' | cut -f3 -d'"'`
echo "${firstname}'|'${id}"
done < `echo $rec | nawk 'gsub("}}}}", "\n")' | sed 's/{"results"//g'`
done < /var/tmp/Cloud_test.txt
我的示例文件是:
{"results":[{"general-info":{"full-name":"TELOS MANAGEMENT","body":{"party":{"xrefs":{"xref":[{" id":"66666"}]}}}},"_id":"91002551"},{"_id":"222222","body":{"party":{"general-info":{"full -name":"DO REUSE"},"xrefs":{"xref":[{"id":"777777"}]}}}}]}
预期结果:
电信管理|66666
重复使用|777777
我在传递参数时遇到内部问题。它没有逐行通过。它通过的完整线路和结果没有按预期进行。请帮助修复它。
【问题讨论】:
-
jq是完成此类工作的正确工具。 Parsing any sort of nested file structure in Bash is a Bad Idea™.
标签: json shell while-loop nested-loops do-while