1) Как правильно проанализировать строку с помощью регулярных выражений в сценарии оболочки linux?
Инструменты, которые включают возможности регулярных выражений, включают sed, grep, awk, Perl, Python и многие другие. Даже в более новой версии Bash есть возможности регулярных выражений. Все, что вам нужно сделать, это посмотреть документы о том, как их использовать.
2) Правильно ли здесь использовать sed?
Может быть, но не обязательно.
3) Можно ли это сделать с помощью grep?
Да, может. вы просто создадите такое же регулярное выражение, как если бы вы использовали sed или другие. Обратите внимание, что grep просто делает то, что делает, и если вы хотите изменить какие-либо файлы, он не сделает это за вас.
4) Есть ли какая-либо другая команда, которая проще / более подходит?
Конечно. регулярное выражение может быть мощным, но это не обязательно лучший инструмент для использования в любое время. Это также зависит от того, что вы подразумеваете под «проще / уместнее».
Другой метод, который нужно использовать с минимальным суетой в регулярных выражениях, - это использование поля / разделителя. вы ищете шаблоны, которые можно «разделить». например, в вашем случае (я скачал файл 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