Каков правильный способ синтаксического анализа строки с использованием регулярных выражений в оболочке linux script? Я написал следующий script, чтобы напечатать мой SO rep на консоли, используя curl
и sed
(не только потому, что я безупречен - я пытаюсь изучить некоторые сценарии оболочки и регулярное выражение перед переключением на Linux).
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", "репутация": "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 script?
- Правильно ли использовать
sed
здесь? - Можно ли это сделать с помощью
grep
? - Есть ли какая-нибудь другая команда, которая станет более легкой/подходящей?