在输入数据下方查找:
[{"acc_id": 166211981, "archived": true, "access_key": "ALLLJNXXXXXXXPU4C7GA", "secret_key": "X12J6SixMaFHoXXXXZW707XXX24OXXX", "created": "2018-10-03T05:56:01.208069Z", "description": "Data Testing", "id": 11722990697, "key_field": "Ae_Appl_Number", "last_modified": "2018-10-03T08:44:20.324237Z", "list_type": "js_variables", "name": "TEST_AE_LI_KEYS_003", "project_id": 1045199007354, "s3_path": "opti-port/dcp/ue.1045199007354/11722990697"}, {"acc_id": 166211981, "archived": false, "access_key": "ALLLJNXXXXXXXPU4C7GA", "secret_key": "X12J6SixMaFHoXXXXZW707XXX24OXXX", "created": "2018-10-03T08:46:32.535653Z", "description": "Data Testing", "id": 11724290732, "key_field": "Ae_Appl_Number", "last_modified": "2018-10-03T10:11:13.167798Z", "list_type": "js_variables", "name": "TEST_AE_LI_KEYS_001", "project_id": 1045199007354, "s3_path": "opti-port/dcp/ue.1045199007354/11724290732"}]
我希望输出文件包含以下数据:
11722990697,TEST_AE_LI_KEYS_003,opti-port/dcp/ue.1045199007354/11722990697
11724290732,EST_AE_LI_KEYS_001,opti-port/dcp/ue.1045199007354/11724290732
我能够一次记录一个记录并使用awk处理它,但是我也得到了字段名。
在我的审判下找到
R=cat in.txt | awk -F '},' '{print $1}'
echo $R | awk -F , '{print $7 " " $11 " " $13}'
我希望整个文件都没有字段名。
答案 0 :(得分:2)
AWK / SED不是解析JSON文件的正确工具。使用jq
[root@localhost]# cat parse_json.py
#!/usr/bin/env python
# Import the json module
import json
# Open the json file in read only mode and load the json data. It will load the data in python dictionary
with open('abc.json') as fh:
data = json.load(fh)
# To print the dictionary
# print(data)
# To print the name key from first and second record
# print(data[0]["name"])
# print(data[1]["name"])
# Now to get both the records use a for loop
for i in range(0,2):
print("%s,%s,%s") % (data[i]["access_key"],data[i]["name"],data[i]["s3_path"])
[root@localhost]# ./parse_json.py
ALLLJNXXXXXXXPU4C7GA,TEST_AE_LI_KEYS_003,opti-port/dcp/ue.1045199007354/11722990697
ALLLJNXXXXXXXPU4C7GA,TEST_AE_LI_KEYS_001,opti-port/dcp/ue.1045199007354/11724290732
如果您不想安装任何其他软件,那么也可以使用大多数Linux机器上都可以找到的python
{{1}}
答案 1 :(得分:0)
假设输入数据在名为input.json
的文件中,则可以使用Python脚本来获取属性。将以下内容放入名为fetch_attributes.py
的文件中:
import json
with open("input.json") as fh:
data = json.load(fh)
with open("output.json", "w") as of:
for record in data:
of.write("%s,%s,%s\n" % (record["id"],record["name"],record["s3_path"]))
然后,以以下方式运行脚本:
python fetch_attributes.py
代码说明
import json
-导入Python的json
库以解析JSON。with open("input.json") as fh:
-打开输入文件并在if
中获取文件处理程序。data = json.load(fh)
-使用load()
库中的json
方法加载JSON输入文件,该库将使用Python字典填充data
变量。with open("output.json", "w") as of:
-以写模式打开输出文件,并在of
中获取文件处理程序。for record in data:
-遍历JSON中的记录列表。of.write("%s,%s,%s\n" % (record["id"],record["name"],record["s3_path"]))
-从每条记录中获取所需的属性并将其写入文件中。