正则表达式 – 在shell脚本中使用正则表达式
在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返回)。
我想我的问题是: >在linux shell脚本中使用正则表达式解析字符串的正确方法是什么?
grep命令将从许多选择所需的行,但不会直接操作该行。为此,您在管道中使用sed:
someCommand | grep 'Amarghosh' | sed -e 's/foo/bar/g' 或者,可以使用awk(或perl(如果可用))。在我看来,这是一个比sed更强大的文本处理工具。 someCommand | awk '/Amarghosh/ { do something }' 对于简单的文本操作,只需坚持使用grep / sed组合。当您需要更复杂的处理时,请继续执行awk或perl。 我的第一个想法是使用: echo '{"displayName":"Amarghosh","reputation":"2,737","badgeHtml"' | sed -e 's/.*tion":"//' -e 's/".*//' -e 's/,//g' 它将sed进程的数量保持为一个(可以使用-e给出多个命令)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |