Как использовать разные параметры при одном поиске с помощью Zgrep

Как я могу использоватьzgrepискатьAгдеBпропал, отсутствует.

Нравиться:

-v Эта опция используется для отображения строк, в которых нет выражения.

пытался:
zgrep "search_for_this" | zgrep -v "where_this_is_missing file.json.gz

не сработало. Что мне нужно:

      {
  "name": "name",
  "lastname": "lastnameee",
  "nickname: "somenickname"
},
{
  "name": "name",
  "lastname": "lastnameee",
  "nickname: "somenickname"
  "uniqueId": "1028hasidhad89h1hd"
},

У меня есть несколькоfiles.json.gzи я хочу найти строки, где: -nameсуществует &&uniqueIdнет. Не просто пропускать значение из возвращаемого результата, а возвращать ТОЛЬКО те строки, где эти два условия выполняются.

1 ответ

  1. вам нужен парсер json, такой как jq. метод, который вы используете, работает только в том случае, когда один объект, например {"name":...}, находится ровно в одной строке, поэтому ваш файл должен выглядеть так:
      {"name": "name", "lastname": "lastnameee", "nickname": "somenickname"},
{ "name": "name", "lastname": "lastnameee", "nickname": "somenickname", "uniqueId": "1028hasidhad89h1hd"},
  1. вам нужно понять, что на самом деле делает труба. символ канала принимает стандартный вывод одной программы и передает его на стандартный ввод другой. так что вам нужно будет сделатьzgrep "searchstring" file.json.gz | zgrep -v "antisearchstring". вы берете file.json.gz в качестве входного файла для первого zgrep и передаете результаты во второй zgrep
Другие вопросы по тегам