【发布时间】:2010-12-10 19:36:43
【问题描述】:
在 linux shell 脚本中使用正则表达式解析字符串的正确方法是什么?我编写了以下脚本以使用curl 和sed 在控制台上打印我的 SO 代表(不仅仅是因为我很疯狂——我正在尝试在切换到 linux 之前学习一些 shell 脚本和正则表达式)。
json=$(curl -s http://stackoverflow.com/users/flair/165297.json)
echo $json | sed 's/.*"reputation":"\([0-9,]\{1,\}\)".*/\1/' | sed s/,//
但不知何故,我觉得sed 不是在这里使用的合适工具。我听说grep 是关于正则表达式的,并对其进行了一些探索。但显然,只要找到匹配项,它就会打印整行 - 我试图从单行文本中提取一个数字。这是我正在处理的字符串的缩小版本(由curl 返回)。
{"displayName":"Amarghosh","reputation":"2,737","badgeHtml":"\u003cspan title=\"1 银徽章\"\u003e\u003cspan class=\"badge2\"\u003e 9679;\u003c/span\u003e\u003cspan class=\"badgecount\"\u003e1\u003c/span\u003e\u003c/span\u003e"}
我想我的问题是:
- 在 linux shell 脚本中使用正则表达式解析字符串的正确方法是什么?
- 在这里使用
sed合适吗? - 可以使用
grep来完成吗? - 还有其他更容易/更合适的命令吗?
【问题讨论】: