获取键中所有值的列表:值列表

时间:2014-05-29 18:47:33

标签: json bash

所以我的输入看起来像

{"selling":"0","quantity":"2","price":"80000","date":"1401384212","rs_name":"overhault","contact":"PM","notes":""}

{"selling":"0","quantity":"100","price":"80000","date":"1401383271","rs_name":"sammvarnish","contact":"PM","notes":"Seers Bank W321 :)"}

{"selling":"0","quantity":"100","price":"70000","date":"1401383168","rs_name":"pwnoramaa","contact":"PM","notes":""}

我想要的输出必须看起来像

0,2,80000,1401384212,overhault,PM,""

0,100,80000,1401383271,sammvarnish,PM,"Seers Bank W321 :)"

0,100,70000,1401383168,pwnoramaa,PM,""

在bash中执行此操作的最佳方法是什么?

编辑:改变了我的需求。 我想要的新输出是 {"卖":" 0""量":" 2""价格":" 80000""日期":" 1401384212"" rs_name":" overhault""接触&#34 ;: " PM""笔记":" testnote"} 作为输入,

rs name: \t overhault
quantity: \t 2
price: \t 80000
date: \t 29-05 19:23
contact: \t PM
notes: \t testnote

其中\ t是制表符(如echo" \ t")。 如你所见,这个有点复杂。 例如,它更改顺序,并要求将UNIX时间戳转换为备用格式。

只要您清楚地解释如何从bash脚本中使用它,我就会使用您可以提供给我的任何工具。输入将包含三行,由换行符分隔,并且必须在每个结果之间用空行打印输出。

1 个答案:

答案 0 :(得分:4)

不要使用正则表达式/ bash执行此操作,此类任务有JSON解析器。简单的Python示例:

import json
data = json.loads('{"selling":"0","quantity":"2"}')
data = ','.join(data.values())
print(data)

我强烈建议您使用这样一个简单的脚本,然后调用它,然后调用。

编辑:这是一个保留订单的版本:

 import json
 data = json.loads('{"selling":"0","quantity":"2", "price":"80000"}')
 orderedkeys = ['selling', 'quantity', 'price']
 values = [data[key] for key in orderedkeys]
 values = ','.join(values)
 print(values)

输出:

 0,2,80000