shell - 如何使用 sed 提取模式之间的线
问题描述
我有一个包含以下 json 数据的文件
"comments": {
"href": "https://api.github.com/repos/sumith08/myrepo/issues/xxxx/comments"
},
我正在尝试使用带有以下命令的 sed 从文件中提取一行。
sed -n '/"comments": {/,/}/p' commands.txt
输出应该只是
https://api.github.com/repos/sumith08/myrepo/issues/xxxx/comments
但我明白了
"comments": {
"href": "https://api.github.com/repos/sumith08/myrepo/issues/xxxx/comments"
},
有人可以帮我正确的命令吗?
解决方案
正如几条评论中所建议的那样,sed
可能不是适合品尝的工具,而jq
似乎是。
以下命令适用于您发布的简单示例,但一旦您在稍微复杂的 JSON 文件中使用它,它可能无效/错误。
sed -n 's/.*\(https.*\)"/\1/p'
推荐阅读
- haskell - Haskell 迷你口译员
- bash - 如何遍历给定的参数以使用 Bash 函数打印参数名称和值?
- php - 带有 php7 的 phpdbg 总是返回 [nothing to execute!]
- c# - 如何根据 LINQ group by 的结果进行分组
- xamarin - 从“电子邮件”共享/复制到 Xamarin App
- sharepoint - SharePoint“DisplayAuthor”精简程序是什么意思?
- java - 如何正确打印这个三角形的字符?
- python - 使用 Keras RNN 处理自己准备的 IMDB 数据时,准确率永远不会超过 0.5
- office-js - 2016 ProPlus MSI 版本 (MSO 16.0.4549.1000) 上的 Outlook 加载项为 displayDialogAsync 提供“权限被拒绝”错误
- python - 尝试使用 scapy 嗅探 http 数据包