如何使用 bash 从字符串中提取字段
How to extract a field from a string with bash
我的脚本输出如下所示
[{"fileName":"animated.avi","movieId":"34802240145","url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321","accessRights":0}]
我需要提取 "url" 的值。
我试过像这样使用 sed。假设输出在 temp.txt
sed '/url/,/accessRights/p' temp.txt
也尝试过使用 grep,但无法提取它。
使用 cut 怎么样?
cat temp.txt | cut -d ',' -f3 | cut -d '"' -f4
拳头切割结果
"url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321"
第二个提取'"'字符之间的内容。
结果:
http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321
我建议使用一段Python代码如下:
#!/usr/bin/python
data = [{"fileName":"animated.avi","movieId":"34802240145","url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321","accessRights":0}]
data = data[0]
# if you want to get the next field of 'url', meaning 'accessRights', calling the following one (or the other field)
print data['accessRights']
将其保存到一个文件中,例如,命名为extract.py
。然后,在终端输入:
user@linux>extract > temp.txt
结果放入文件temp.txt
。在此示例中,0
是返回值。
我的脚本输出如下所示
[{"fileName":"animated.avi","movieId":"34802240145","url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321","accessRights":0}]
我需要提取 "url" 的值。
我试过像这样使用 sed。假设输出在 temp.txt
sed '/url/,/accessRights/p' temp.txt
也尝试过使用 grep,但无法提取它。
使用 cut 怎么样?
cat temp.txt | cut -d ',' -f3 | cut -d '"' -f4
拳头切割结果
"url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321"
第二个提取'"'字符之间的内容。
结果:
http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321
我建议使用一段Python代码如下:
#!/usr/bin/python
data = [{"fileName":"animated.avi","movieId":"34802240145","url":"http://vu.mycdn.me/upload.do?sig=2223a95d7e51832a09d03aa2f23ad3dec0a2c430\u0026expires=1441573849826\u0026clientType=0\u0026id=34802240145\u0026userId=569513266321","accessRights":0}]
data = data[0]
# if you want to get the next field of 'url', meaning 'accessRights', calling the following one (or the other field)
print data['accessRights']
将其保存到一个文件中,例如,命名为extract.py
。然后,在终端输入:
user@linux>extract > temp.txt
结果放入文件temp.txt
。在此示例中,0
是返回值。