当前位置: 技术问答>linux和unix
shell 用正则表达式分析json格式的文件
来源: 互联网 发布时间:2017-05-26
本文导语: [ { "downPath": "http://d.zhidian3g.cn/yimi-cloudbox/apk/com.monster.game96_V1.0.0_20140430173404213.apk", "downloads": 32442253, "explain": "异星掠夺者们盯上了我们美丽而富饶的地球,他们派出了疯狂的...
[
{
"downPath": "http://d.zhidian3g.cn/yimi-cloudbox/apk/com.monster.game96_V1.0.0_20140430173404213.apk",
"downloads": 32442253,
"explain": "异星掠夺者们盯上了我们美丽而富饶的地球,他们派出了疯狂的邪恶战机对地球进行日夜攻击",
"iconPath": "http://d.zhidian3g.cn/yimi-cloudbox/app/icon/2014081814472831090.png",
"id": 308372,
"name": "雷霆战机3豪华版",
"packageName": "com.monster.game96",
"score": 8,
"size": 6441,
"source": 3,
"type": 2,
"version": "1.0.0"
},
{
"downPath": "http://d.zhidian3g.cn/yimi-cloudbox/apk/net.lazyer.fkct.sky_V1.10_20140422154657541.apk",
"downloads": 202292,
"explain": "再不来猜,我们就老了!猜你妹全新玩法上线,挑战你的360度知识库",
"iconPath": "http://d.zhidian3g.cn/yimi-cloudbox/app/icon/2014081915200964347.png",
"id": 246500,
"name": "猜你妹",
"packageName": "net.lazyer.fkct.sky",
"score": 10,
"size": 3321,
"source": 3,
"type": 2,
"version": "1.10"
}
]
这样格式的存在一个名为1.txt,我现在要做的是有shell脚本实现的功能是:把里面的内容读取出来然后拿到里面的downpath和iconpath的下载地址并下载,有没有像面向对象编程的吧{}里的内容用一个对象保存,并把这些对象加进列表里,就能很快的访问对象的成员变量,把下载好的存到另一个文件,之后把下载成功的文件保存在2.txt文件格式为http://d.zhidian3g.cn/yimi-cloudbox/apk/net.lazyer.fkct.sky_V1.10_20140422154657541.apk:猜你妹
{
"downPath": "http://d.zhidian3g.cn/yimi-cloudbox/apk/com.monster.game96_V1.0.0_20140430173404213.apk",
"downloads": 32442253,
"explain": "异星掠夺者们盯上了我们美丽而富饶的地球,他们派出了疯狂的邪恶战机对地球进行日夜攻击",
"iconPath": "http://d.zhidian3g.cn/yimi-cloudbox/app/icon/2014081814472831090.png",
"id": 308372,
"name": "雷霆战机3豪华版",
"packageName": "com.monster.game96",
"score": 8,
"size": 6441,
"source": 3,
"type": 2,
"version": "1.0.0"
},
{
"downPath": "http://d.zhidian3g.cn/yimi-cloudbox/apk/net.lazyer.fkct.sky_V1.10_20140422154657541.apk",
"downloads": 202292,
"explain": "再不来猜,我们就老了!猜你妹全新玩法上线,挑战你的360度知识库",
"iconPath": "http://d.zhidian3g.cn/yimi-cloudbox/app/icon/2014081915200964347.png",
"id": 246500,
"name": "猜你妹",
"packageName": "net.lazyer.fkct.sky",
"score": 10,
"size": 3321,
"source": 3,
"type": 2,
"version": "1.10"
}
]
这样格式的存在一个名为1.txt,我现在要做的是有shell脚本实现的功能是:把里面的内容读取出来然后拿到里面的downpath和iconpath的下载地址并下载,有没有像面向对象编程的吧{}里的内容用一个对象保存,并把这些对象加进列表里,就能很快的访问对象的成员变量,把下载好的存到另一个文件,之后把下载成功的文件保存在2.txt文件格式为http://d.zhidian3g.cn/yimi-cloudbox/apk/net.lazyer.fkct.sky_V1.10_20140422154657541.apk:猜你妹
|
这个应该不难吧,不用正则也可以
用grep查找关键字downPath所在行
用awk分割字符串,获取下载路径
用wget 下载
用grep查找关键字downPath所在行
用awk分割字符串,获取下载路径
用wget 下载
|
下载很简单:
awk -F'[",]' '/downPath|iconPath/{system("wget "$4)}' 1.txt
把下载的存进一个文件?描述错了吧。是把下载的文件url及名称保存成2.txt吧?
awk -F'[",]' '/downPath/{printf $4":"}/name/{print $4}' 1.txt |tee 2.txt
awk -F'[",]' '/downPath|iconPath/{system("wget "$4)}' 1.txt
把下载的存进一个文件?描述错了吧。是把下载的文件url及名称保存成2.txt吧?
awk -F'[",]' '/downPath/{printf $4":"}/name/{print $4}' 1.txt |tee 2.txt