以下命令:
jq ".[] | .file.url_private_download" *json
生成许多行,其形式为:
"https://files.slack.com/files-pri/T27SFGS2W-F78LH1DN2/download/img_1964.jpg?t=xoxe-243624297126-248125875671-248125975751-cee1f8d9a1"
在每一行前面添加 wget 命令的最简单方法是什么?
非常感谢
答案1
这是您的命令,仅进行了一些修改:
jq -r '.[] | @sh "wget \(.file.url_private_download)"' *json
变化:
用于
-r
获取解码字符串作为输出,而不是 JSON 编码字符串。创建以 开头的字符串,
wget
后跟结构中所需的值,用于\(...)
将文档中的值插入到字符串中。用于
@sh
正确引用 shell 生成的字符串。这可确保每个字符串中的内插值都被安全地引用以在 shell 中使用。
使用上述命令,包含您显示的 URL 的条目预计会生成以下行作为输出:
wget 'https://files.slack.com/files-pri/T27SFGS2W-F78LH1DN2/download/img_1964.jpg?t=xoxe-243624297126-248125875671-248125975751-cee1f8d9a1'
答案2
您可以使用xargs
在每行前面添加您想要的命令:
jq ".[] | .file.url_private_download" *json | xargs -n1 /bin/echo "wget"
答案3
您可以用来sed
重写每行的开头:
jq ".[] | .file.url_private_download" *json | sed 's/^/wget /'
这里用任何替换模式“替换”行的开头wget
或wget
所有文件:
jq ".[] | .file.url_private_download" *json | wget -i -