Задать вопрос
@anton0211

Как найти строку в текстовом файле с помощью grep?

Добрый день. Задался вопросом, как на MAC OS использовать grep. Вопрос такой: есть текстовый файл имеющий много записей вида:
"id": "5644561-46484-546545" , "number": "879876-5644561-546545" ,"reestr":"46878-6214-8794"

Как сделать так что если я вписываю idишники и то вывело бы строку вида 5644561-46484-546545: 46878-6214-8794

Пробовал:
grep'\"id\":\"{}\"'|grep '\"reestr\":\"[0-9]*' > result.txt


Сильно не ругайте, делал по аналогии с линукс - но нефига не работает(
  • Вопрос задан
  • 235 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
2ord
@2ord
Попробуй jq. Довольно удобно для обработки и извлечения данных.
Ответ написан
@Voland69
Для обработки json документов ИМХО лучше использовать jq.
Она имеет развитые фичи фильтрации и поиска по json, на мак отлично ставится через homebrew.
Ответ написан
@AVKor
Задался вопросом, как на MAC OS использовать grep.

Прежде всего, поставить GNU-тый.
На "скорую руку":
tr -d '[:space:]"' | awk -F',' '{print $1 $3}' | sed -e 's/id://' -e 's/reestr:/: /'
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
Да, поиск по json

если у вас файл json типа такого:
file.json
[
{"id": "5644561-46484-546545" , "number": "879876-5644561-546545" ,"reestr":"46878-6214-8794"},
{"id": "6644561-46484-546545" , "number": "979876-5644561-546545" ,"reestr":"56878-6214-8794"},
{"id": "7644561-46484-546545" , "number": "079876-5644561-546545" ,"reestr":"66878-6214-8794"}
]


то там довольно всё просто делается используя консольную утилиту jq:
$ jq -r '.[] | "\(.id): \(.reestr)"' file.json
5644561-46484-546545: 46878-6214-8794
6644561-46484-546545: 56878-6214-8794
7644561-46484-546545: 66878-6214-8794


если нужен конкретный id:
$ jq -r '.[] | select(.id == "7644561-46484-546545") | "\(.id): \(.reestr)"' file.json
7644561-46484-546545: 66878-6214-8794


ну или через внешнюю переменную:
$ jq -r --arg ID "7644561-46484-546545" '.[] | select(.id == $ID) | "\(.id): \(.reestr)"' file.json
7644561-46484-546545: 66878-6214-8794
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы