1)在Linuxshell脚本中使用正则表达式解析字符串的正确方法是什么?
包括正则表达式功能的工具包括sed、grep、awk、perl、python等等。即使是更新版本的bash也具有regex功能。你所要做的就是查找关于如何使用它们的文档。
2)在这里使用SED是正确的吗?
可以,但不是必须的。
3)这可以用grep来完成吗?
是的,可以。您只需构造类似的regex,就像使用sed或其他方法一样。请注意,grep只做它所做的,如果您想修改任何文件,它不会为您做。
4)是否有其他更简单/更合适的命令?
当然。regex可以很强大,但它不一定是每次使用的最佳工具。这也取决于你所说的“简单/合适”的意思。
在regex上使用的另一种方法是使用字段/分隔符方法。你要寻找可以“分裂”的图案。例如,在您的情况下(我下载了165297.json文件,而不是使用curl…(但它是相同的)
awk 'BEGIN{
FS="reputation" # split on the word "reputation"
}
{
m=split($2,a,"\",\"") # field 2 will contain the value you want plus the rest
# Then split on ":" and save to array "a"
gsub(/[:\",]/,"",a[1]) # now, get rid of the redundant characters
print a[1]
}' 165297.json
输出:
$ ./shell.sh
2747