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