如何用sed过滤GitHub API JSON中的缩进行以提取仓库名称
提取GitHub仓库名称的sed解决方案
直接用这条命令就能搞定,它会精准过滤出带"name"的行,同时自动去掉缩进和多余的JSON符号,只留下干净的仓库名称:
sed -n 's/^[[:space:]]*"name": "\(.*\)",/\1/p' htop.json
拆解下命令的核心逻辑:
-n:让sed只输出我们明确指定的行,避免默认输出所有行造成冗余s/匹配模式/替换内容/:sed的替换核心命令,这里用来剥离无用内容^[[:space:]]*:匹配行首任意数量的空白字符(缩进),[[:space:]]是跨平台的空白匹配规则,比\s兼容性更好"name": "\(.*\)":精准匹配"name": "开头的内容,用\(.*\)捕获引号里的仓库名称(这部分是我们要保留的核心),\1:把整行替换成捕获到的仓库名称(\1对应前面\(.*\)捕获的内容),同时去掉行尾的逗号p:只有替换成功的行才会被输出
如果你的系统对[[:space:]]支持有问题(其实绝大多数现代系统都没问题),也可以用更直白的空格+制表符匹配:
sed -n 's/^[ \t]*"name": "\(.*\)",/\1/p' htop.json
运行后你会得到类似这样的干净结果:
htop-dev/htop
libsdl-org/SDL
ncurses/ncurses
...
全程只用sed实现,轻量无额外依赖,跨平台兼容性拉满~
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

