我该如何使用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
- 你想要的是一个像 jq 这样的 json 解析器。您使用的方法仅适用于一个对象(例如 {“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