【问题标题】:Adding a new line to a file在文件中添加新行
【发布时间】:2021-06-27 12:46:42
【问题描述】:

我正在尝试使用 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,这是有道理的。我读到的一个建议是将-i 添加到awk,但这不是一个公认的选项。我不能在需要它的地方使用该行,因为该行可能会随着更新而改变。我也不能只用一个新文件替换整个文件,因为它还包含散列帐户信息。我也尝试将此行添加到文件末尾,但 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

我已经在这里搜索并尝试了解决方案,但似乎没有一个有效,而且有些人的建议是“我做了这个......”,但没有解释他们是如何做到“这个”的。

【问题讨论】:

    标签: macos awk sed


    【解决方案1】:

    对于您显示的示例,您能否尝试以下操作。只需找到字符串的匹配项并打印您要打印的当前行和值。

    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 本身。

    【讨论】:

    • 这给了我文件的输出,新行在正确的位置,但不像我的 awk 示例那样编辑文件。
    • @Kevin,当然,请立即查看我更新的帖子,将> temp && mv temp Input_file 附加到上述命令以将更改保存到 Input_file 本身。
    • 是的,效果很好。非常感谢。我不知道为什么我没有考虑以这种方式接近它。
    【解决方案2】:

    这可能对你有用:

    sed -i'' -e '/core.clock_delta=0/a app.autostart-mode="off"' prefs
    

    -i 选项允许更改覆盖原始文件。

    -e 选项对于 macOS 可能是必需的。

    " 不需要转义,因为它们在 a 命令中没有意义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-05
      • 2016-04-21
      • 2012-04-21
      • 1970-01-01
      • 2010-10-20
      • 2020-01-01
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多