映射,但在密钥对之间有换行符
map, but with newline characters between keypairs
假设我有像
这样的输入
{"DESCRIPTION": "Need to run script to do stuff", "PRIORITY": "Medium"}
但也能得到像
这样的输入
{"STACK_NAME": "applecakes", "BACKEND_OR_INTEGRATIONS": "integrations", "PRIORITY": "Medium"}
即参数可以完全不同
我需要以更友好的格式获取输出,以便发送到 Jira 以制作票证。具体来说,我想去掉 json 格式,并在每个密钥对之间插入一个 \n
。以上示例应如下所示:
DESCRIPTION: Need to run script to do stuff\nPRIORITY: Medium
STACK_NAME: applecakes\nBACKEND_OR_INTEGRATIONS: integrations\nPRIORITY: Medium
可以有一点灵活性,例如,如果需要更多 space 或其他什么。
到目前为止我已经解决了这个问题(假设我的输入存储在一个名为 description
的变量中
echo $description | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]"
这可以去除 JSON 格式,但不处理换行符。我对如何确保仅在每个密钥对上进行拆分感到困惑,而不是在每个 space 或任何同样混乱的情况下进行拆分。我需要添加什么来包含换行符?地图是我最好的选择吗?
只需将字符串数组与 \n
连接起来(我们需要转义的 \
字符和 n
字符的序列)并使用原始输出:
jq --raw-output 'to_entries | map("\(.key) : \(.value)") | join("\n")'
试试看 here.
或者更高效更简单:
jq -r 'to_entries[] | "\(.key) : \(.value)"'
这会为每个键值对生成一行。
两个字符的序列\n
作为连接字符串
使用您的示例 JSON,调用:
jq -j -r 'to_entries[] | "\(.key) : \(.value)", "\n" '
会产生:
STACK_NAME : applecakes\nBACKEND_OR_INTEGRATIONS : integrations\nPRIORITY : Medium\n
注意结尾的“\n”。
假设我有像
这样的输入{"DESCRIPTION": "Need to run script to do stuff", "PRIORITY": "Medium"}
但也能得到像
这样的输入{"STACK_NAME": "applecakes", "BACKEND_OR_INTEGRATIONS": "integrations", "PRIORITY": "Medium"}
即参数可以完全不同
我需要以更友好的格式获取输出,以便发送到 Jira 以制作票证。具体来说,我想去掉 json 格式,并在每个密钥对之间插入一个 \n
。以上示例应如下所示:
DESCRIPTION: Need to run script to do stuff\nPRIORITY: Medium
STACK_NAME: applecakes\nBACKEND_OR_INTEGRATIONS: integrations\nPRIORITY: Medium
可以有一点灵活性,例如,如果需要更多 space 或其他什么。
到目前为止我已经解决了这个问题(假设我的输入存储在一个名为 description
echo $description | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]"
这可以去除 JSON 格式,但不处理换行符。我对如何确保仅在每个密钥对上进行拆分感到困惑,而不是在每个 space 或任何同样混乱的情况下进行拆分。我需要添加什么来包含换行符?地图是我最好的选择吗?
只需将字符串数组与 \n
连接起来(我们需要转义的 \
字符和 n
字符的序列)并使用原始输出:
jq --raw-output 'to_entries | map("\(.key) : \(.value)") | join("\n")'
试试看 here.
或者更高效更简单:
jq -r 'to_entries[] | "\(.key) : \(.value)"'
这会为每个键值对生成一行。
两个字符的序列\n
作为连接字符串
使用您的示例 JSON,调用:
jq -j -r 'to_entries[] | "\(.key) : \(.value)", "\n" '
会产生:
STACK_NAME : applecakes\nBACKEND_OR_INTEGRATIONS : integrations\nPRIORITY : Medium\n
注意结尾的“\n”。