Заменить указанные строки в файле строками из другого файла с помощью sed

Инструмент jq, который я использую в этом ответе, может быть загружен изhttps://stedolan.github.io/jq/(даже для Solaris )и установлен в домашнем каталоге не -пользователя root без какого-либо доступа root. Кроме того, он вообще не имеет никаких зависимостей во время выполнения.


В документе JSON нет «второго столбца». Ваш документ также может быть написан

[
  {
    "FRUIT": "APPLE",
    "CAR": "FORESTER",
    "COMPANY": "SUBARU",
    "MAKE": "2015",
    "CITY": "UNION CITY",
    "STATE": 0,
    "COUNTRY": 0,
    "LOCATION": 0,
    "RANK": "1"
  },
  {
    "FRUIT": "MANGO",
    "CAR": "OUTBACK",
    "COMPANY": "SUBARU",
    "MAKE": "2017",
    "CITY": "EDISON",
    "STATE": 0,
    "COUNTRY": 0,
    "LOCATION": 0,
    "RANK": "2"
  }
]

Добавленный пробел не влияет на фактические данные JSON.

Чтобы извлечь значения всех записей, соответствующих ключу CAR, используйте jqсинтаксический анализатор JSON командной строки:

$ jq '.[].CAR' file.json
"FORESTER"
"OUTBACK"

Выражение .[].CARозначает «Для каждого элемента верхнего -самого массива вернуть значение ключа CAR».

Если вы хотите, чтобы в выводе не было кавычек, добавьте-r(или--raw-output)к вызову jq. Это вернет декодированные данные.

0
14.08.2021, 03:52
0 ответов

Теги

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