使用linux脚本中的正则表达式解析字符串的正确方法是什么?我编写了下面的脚本,使用curl和sed在控制台上打印我的some (不仅仅是因为我的代表疯了--在切换到linux之前,我正在尝试学习一些shell脚本和regex )。
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
我想我的问题是:
sed是正确的吗?grep来完成吗?发布于 2009-10-28 13:54:49
盲目地:
echo $json | awk -F\" '{print $8}'类似(字段分隔符可以是正则表达式):
awk -F'{"|":"|","|"}' '{print $5}'更智能(查找键并打印其值):
awk -F'{"|":"|","|"}' '{for(i=2; i<=NF; i+=2) if ($i == "reputation") print $(i+1)}'https://stackoverflow.com/questions/1636352
复制相似问题