【发布时间】:2019-06-01 15:46:57
【问题描述】:
我正在尝试使用jq 修改deluge web.conf 文件,但遇到了一些问题。洪水网络配置似乎是无效的 json
{
"file": 1,
"format": 1
}
{
"sidebar_show_zero": false,
"show_session_speed": false,
"pwd_sha1": "CHANGEME",
"show_sidebar": true,
"sessions": {},
"enabled_plugins": [],
"base": "/",
"first_login": true,
"theme": "gray",
"pkey": "ssl/daemon.pkey",
"default_daemon": "",
"cert": "test",
"session_timeout": 3600,
"https": false,
"interface": "0.0.0.0",
"sidebar_multiple_filters": true,
"pwd_salt": "salt",
"port": 8112
}
它有多个没有用逗号分隔的顶级元素,所以如果我尝试使用jq 使用类似jq '.pwd_sha1 = "NEW HASH"' web.conf 的东西编辑文件,我会得到以下信息
{
"file": 1,
"format": 1,
"pwd_sha1": "NEW HASH"
}
{
"sidebar_show_zero": false,
"show_session_speed": false,
"pwd_sha1": "NEW HASH",
"show_sidebar": true,
"sessions": {},
"enabled_plugins": [],
"base": "/",
"first_login": true,
"theme": "gray",
"pkey": "ssl/daemon.pkey",
"default_daemon": "",
"cert": "test",
"session_timeout": 3600,
"https": false,
"interface": "0.0.0.0",
"sidebar_multiple_filters": true,
"pwd_salt": "salt",
"port": 8112
}
jq 正在向第一个顶级对象添加一个新元素并更改第二个顶级元素的值。我怎样才能让它只更改第二个顶级元素中的现有项目?
【问题讨论】:
-
jq 'if has("pwd_sha1") then .pwd_sha1="NEW_HASH" else . end' web.conf;但为什么不deluge-console 'config -s pwd_sha1 "NEW_HASH"'? -
@Amadan 可以,但我不能这样做
deluge-console,因为这是一个 docker 映像,我正在 bash 安装脚本中应用配置。我可能会使用它,但它会比使用jq更复杂
标签: json stream edit jq deluge