[英]Adding a new line to a file
我正在尝试使用 bash 脚本来禁用 Spotify 在 macOS 上登录时启动的功能。 Spotify 不使用登录项或启动项来启动,因此我必须弄清楚这一点。
Spotify 在~/Library/Application Support/Spotify
中有一个名为prefs
的文件。 我可以通过在文件中的core.clock_delta=0
行之后添加行app.autostart-mode="off"
手动编辑文件。 我想弄清楚的是如何用脚本来做到这一点。 我尝试了以下方法:
sed '/core.clock_delta=0/a app.autostart-mode=\"off\"' prefs
这给了我错误sed: 1: "/core.clock_delta=0/a a...": command a expects \ followed by text
awk '1;/core.clock_delta=0/{ print "app.autostart-mode=\"off\""; }' prefs
这会以我期望的方式输出prefs
文件的文本,但不会向prefs
文件写入任何内容,考虑到它是awk
,这是有道理的。 我读到的一个建议是在awk
中添加-i
,但这不是一个公认的选项。 我不能在需要它的地方使用该行,因为该行可能会随着更新而改变。 我也不能只用一个新文件替换整个文件,因为它还包含散列帐户信息。 我也尝试将此行添加到文件末尾,但 Spotify 会在第一次运行时崩溃,然后替换文件。
基本上我正在寻找的是这个
storage.last-location="~/Library/Application Support/Spotify/PersistentCache/Storage"
core.clock_delta=0
app.last-launched-version="1.1.55.498.gf9a83c60"
app.autostart-configured=true
成为这个
storage.last-location="~/Library/Application Support/Spotify/PersistentCache/Storage"
core.clock_delta=0
app.autostart-mode="off"
app.last-launched-version="1.1.55.498.gf9a83c60"
app.autostart-configured=true
我在这里搜索并尝试了解决方案,但似乎没有一个有效,有些人的建议是“我做了这个……”,但没有解释他们是如何做到“这个”的。
使用您显示的示例,您能否尝试以下操作。 只需找到字符串的匹配项并打印您要打印的当前行和值。
awk '/core\.clock_delta=0/{print $0 ORS "app.autostart-mode=\"off\"";next} 1' Input_file
或者可以这样做:
awk '/core\.clock_delta=0/{$0=$0 ORS "app.autostart-mode=\"off\""} 1' Input_file
一旦您对屏幕/终端上打印的结果感到满意,然后 append > temp && mv temp Input_file
到上述命令以将更改保存到 Input_file 本身。
这可能对您有用:
sed -i'' -e '/core.clock_delta=0/a app.autostart-mode="off"' prefs
-i
选项允许更改覆盖原始文件。
macOS 可能需要-e
选项。
"
不需要转义,因为它们在a
命令中没有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.