Macos 向文件中添加新行
我正在尝试使用bash脚本禁用Spotify在macOS上登录时启动的功能。Spotify不使用登录项或启动来启动,因此我必须弄清楚这一点 Spotify有一个名为Macos 向文件中添加新行,macos,awk,sed,Macos,Awk,Sed,我正在尝试使用bash脚本禁用Spotify在macOS上登录时启动的功能。Spotify不使用登录项或启动来启动,因此我必须弄清楚这一点 Spotify有一个名为prefs的文件,位于~/Library/Application Support/Spotify中。我可以通过在文件中的core.clock_delta=0行之后添加行app.autostart mode=“off”手动编辑该文件。我想弄明白的是如何用脚本来实现这一点。我尝试了以下方法: sed '/core.clock_delta=
prefs
的文件,位于~/Library/Application Support/Spotify
中。我可以通过在文件中的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…”:命令a预期\后跟文本
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
一旦您对屏幕/终端上打印的结果感到满意,然后将>temp&mv temp Input_file
附加到上述命令,以将更改保存到Input_file本身。这可能适用于您:
sed -i'' -e '/core.clock_delta=0/a app.autostart-mode="off"' prefs
-i
选项允许更改覆盖原始文件
macOS可能需要-e
选项
“
不需要转义,因为它们在a
命令中没有任何意义。这会给我文件的输出,新行在正确的位置,但不会像我的awk示例那样编辑文件。@Kevin,当然,请现在查看我更新的帖子,将>temp&&mv temp Input_file
附加到上述命令中,以将更改保存到输入_文件本身。是的,这非常有效。非常感谢你。我不知道为什么我没有想过要这样做。