【发布时间】:2017-10-25 18:19:01
【问题描述】:
文件如下:
{"project":"platform/xxxxx/xxxxxx/build/repo","branch":"xxxxx_xx.xxxxx.xxx.1.0-dev","id":"T19797TIE76757IT78689899G","number":"1917095","subject":"xxxxx-2.0: blah blah blah","owner":{"name":"David","email":"david@xxxx.com","username":"david"},"url":"https://link_to_repo.com/1917095","createdOn":1493282302,"lastUpdated":1493813064,"sortKey":"000899786887","open":false,"status":"MERGED"
我需要在字符串 "number":" 或字符串 "https://link_to_repo.com/" 之后的数字 "1917095" ,因此即使字段的位置发生变化,输出也应该只给出这些数字。
我试图通过以下方式实现它:
awk -F'[,:"]' '{ print $23 }' file_name
这给了我结果,但我需要找到更好的解决方案。
所以我需要借助 python(我是新手)或 bash 中的任何工具来帮助实现这一目标?
【问题讨论】:
-
数据真的都在一行吗?问题格式使它看起来在
"David之后有一个换行符。为什么需要“更好”的解决方案? -
是json文件吗?
-
@lit- 没有数据是这样的- {"project":"platform/xxxxx/xxxxxx/build/repo","branch":"xxxxx_xx.xxxxx.xxx.1.0-dev", "id":"T19797TIE76757IT78689899G","number":"1917095","subject":"xxxxx-2.0: blah blah blah","owner":{"name":"David","email":"david@ xxxx.com","username":"david"},"url":"link_to_repo.com/…" {"type":"stats","rowCount":1,"runTimeMilliseconds":3} ,换行在 "MERGED" 之后开始" 然后是 {"type":"stats","rowCount":1,"runTimeMilliseconds":3}。
-
@lit 我需要一个更好的解决方案,因为我的命令 awk 用分隔符分隔字段,然后显示字段,但我需要自动化这项工作,所以如果字段位置发生变化,那么所需的输出可能不在字段 $23 中,所以如果我可以从“link_to_repo.com/1917095”中提取数字,使用搜索并给出输出的命令在“link_to_repo.com”之后会更好。这就是我的观点。
-
@RomanPerekhrest 是的,但我只展示了一个 sn-p。
标签: python json regex shell awk