Врезать в Баш все вокруг строки - PullRequest
0 голосов
/ 08 февраля 2019
  • Я экспортировал много JSON-файлов, почти 100.
  • В основном это огромные строки.

  • Каждый файл имеет "uid":"random".

  • Как вырезать только "uid":"random" часть для всех файлов из главного каталога?

  • Я пытался с grep {}, но не могу обойти кавычки на UID и значение.

  • Кроме того, я попытался сократить его, но проблема заключается в кавычках.
  • Структура строки:

    ... "title": "Случайный заголовок "," uid ":" r4nd0muid "," version ": X}," overwrite ": true}

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Не используйте ничего, кроме инструментов, поддерживающих JSON, для обработки файлов JSON и опубликуйте соответствующий пример для тестирования, но обойдите кавычки в uid и значение в опубликованной строке:

$ grep -o \"uid\":\"[^\"]*\" foodata
"uid":"r4nd0muid"

В основном "uid":"[^"]*", т.е.после "uid":" все не - " и ".

0 голосов
/ 08 февраля 2019

Вероятно, намного проще использовать jq, который является инструментом поиска и преобразования для файлов JSON.

Учитывая файл test.json:

{
  "uuid": "whatever"
}

Вы можете извлечь только поле uuid с помощью:

jq '.uuid' test.json
# output: "whatever"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...