假设我有一个很大的 JSON 行文件(超过 10k),如下所示:
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "12345"}}}
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "23456"}}}
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "33445"}}}
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "24656"}}}
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "15523"}}}
{"type": "RECORD", "record": {"stream": "...", "data": {"ticketNumber": "30030"}}}
Run Code Online (Sandbox Code Playgroud)
我试图jq仅提取 TicketNumbers 为“24656”和“33445”的记录。我尝试过以下命令
cat datafile.json | jq '.record.data | select(.ticketNumber | map(in(["24656", "33445"])))'
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
但我得到的只是错误“错误位于...无法迭代字符串('...')”)。
您检查股票代码是否存在于允许列表中的方式不太正确,map(..)并且in未正确使用 和 。你可以做类似的事情
["24656", "33445"] as $valid | select(.record.data.ticketNumber | IN($valid[]))
Run Code Online (Sandbox Code Playgroud)