系统
Linux local 5.0.0-27-lowlatency #28-Ubuntu SMP PREEMPT Tue Aug 20 20:33:37 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
问题
我有输入文件。
{ "article": {"code": "01333457004","name": "ALAZANIS VALLEY 2015","note": "ČERV VÍNO EVROPA VÝCH OSTATNÍ","sel_unit": "Kus","unit_price": 229.0,"category": "ČERVENÉ,POLOSLADKÉ","unit": "L","EAN": "4867601700052","unit_volume": 0.75,"producer": null,"tax": 21.0,"text": "Alazanis Valley 2015;Gruzie,Kachetie;červené polsladké;750ml;16°C;Alazanis Valley 2015;Gruzie,Kachetie;červené polsladké;750ml;16°C;","is_action": "1","action_from": "20190905","action_to": "20190918","ordered_from": "20190126","ordered_to": "20190830","shelf_id": "1030542","is_outlet": 0}}
我怎样才能只得到这个输出(一些列)?
"code": "01333457004","name": "ALAZANIS VALLEY 2015","is_action": "1","action_from": "20190905","action_to": "20190918"
没有jq
或其他应用程序,我只需要 bashsed
或awk
,或一些基本命令,我没有安装它的管理员权限。
我试过了
我试过cut
了,但分隔符有问题,
(有时在 中"
)。
谢谢。
你可以试试这个:
详情:
grep -o '"[^"]*"\s*:\s*"[^"]*"'
找到所有"key": "value"
对并将它们打印在不同的行上;例子:
输出:
grep -E '^"(code|name|is_action|action_from|action_to)"'
只过滤需要的键。输出:
tr '\n' ','
将新行替换为逗号。输出:
sed 's/,$//'
删除最后一个额外的逗号。输出:
完整示例
命令:
输出:
或者,如果您只想要这些值:
尽管
,
分隔符失败,但您可以将:
分隔符与cut
:我调用了脚本
ParseJSON
,这是它的输出: