【发布时间】:2021-07-16 03:09:58
【问题描述】:
使用 JQ,我需要将 JSON 对象转换为一种非常特殊的格式,称为 zmp,如下所示:
selectMailbox user.one@domain.com
modifyFolderFlags /Inbox ""
modifyFolderFlags /Inbox/teste ""
selectMailbox user.two@domain.com.br
modifyFolderFlags /Inbox ""
modifyFolderFlags /Sent ""
有了这个程序:
jq -r '.. | objects | select(.flags == "i" or .flags == "#i") | "selectMailbox \(input_filename)","modifyFolderFlags \(.path) \"\" "' *
我能够输出:
selectMailbox user.one@domain.com
modifyFolderFlags /Inbox ""
selectMailbox user.one@domain.com
modifyFolderFlags /Inbox/teste ""
selectMailbox user.two@domain.com.br
modifyFolderFlags /Inbox ""
selectMailbox user.two@domain.com.br
modifyFolderFlags /Sent ""
如您所见,它多次输出selectMailbox,并且缺少块分隔符(空白行)。
以下是示例输入。
/tmp/jq/user.one@domain.com
{
"path": "/",
"subFolders": [
{
"flags": "#",
"path": "/Drafts",
"subFolders": []
},
{
"flags": "#i",
"path": "/Inbox",
"subFolders": [
{
"flags": "i",
"path": "/Inbox/teste",
"subFolders": []
}
],
"unreadCount": 0
},
{
"path": "/Sent",
"subFolders": []
}
],
"unreadCount": 0
}
/tmp/jq/user.two@domain.com.br
{
"path": "/",
"subFolders": [
{
"flags": "#i",
"path": "/Inbox",
"subFolders": []
},
{
"flags": "#i",
"path": "/Sent",
"subFolders": []
},
{
"flags": "#",
"path": "/Trash",
"subFolders": []
}
],
"unreadCount": 0
}
【问题讨论】: