首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在shell脚本中使用正则表达式

在shell脚本中使用正则表达式
EN

Stack Overflow用户
提问于 2009-10-28 10:21:59
回答 11查看 68.2K关注 0票数 23

使用linux脚本中的正则表达式解析字符串的正确方法是什么?我编写了下面的脚本,使用curlsed在控制台上打印我的some (不仅仅是因为我的代表疯了--在切换到linux之前,我正在尝试学习一些shell脚本和regex )。

代码语言:javascript
运行
复制
json=$(curl -s http://stackoverflow.com/users/flair/165297.json)
echo $json | sed 's/.*"reputation":"\([0-9,]\{1,\}\)".*/\1/' | sed s/,//

但不知何故,我觉得sed不是这里使用的合适工具。我听说grep完全是关于regex的,并对其进行了一些探索。但很明显,每当找到匹配时,它就会打印整条线--我正试图从一行文本中提取一个数字。下面是我正在处理的字符串的缩小版本(由curl返回)。

{"displayName":"Amarghosh",“名誉”:“2,737”,"badgeHtml":"\u003cspan title=\"1枚银徽章\\u003E\u003cspan displayName

我想我的问题是:

  • 使用linux脚本中的正则表达式解析字符串的正确方法是什么?
  • 在这里使用sed是正确的吗?
  • 这能用grep来完成吗?
  • 还有其他更容易/更合适的命令吗?
EN

Stack Overflow用户

发布于 2009-10-28 13:54:49

盲目地:

代码语言:javascript
运行
复制
echo $json | awk -F\" '{print $8}'

类似(字段分隔符可以是正则表达式):

代码语言:javascript
运行
复制
awk -F'{"|":"|","|"}' '{print $5}'

更智能(查找键并打印其值):

代码语言:javascript
运行
复制
awk -F'{"|":"|","|"}' '{for(i=2; i<=NF; i+=2) if ($i == "reputation") print $(i+1)}'
票数 0
EN
查看全部 11 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1636352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档