Bash,将行插入文件

Bash, inject line into a file

最初我在下面有一个错误,所以我正在编辑并重新打开它。

我在向文件中注入行时遇到了一些问题。我的目标是:

  1. 查找该行(在本例中为 VIMLINE)。如果该行在那里,则什么也不做(或删除该行,我需要在不同时间同时执行 'do nothing' 和 'remove the line',但不知道如何适合删除 - 删除是针对某些情况我想确保我在脚本末尾注入)。
  2. 如果该行不存在(这是 || 应该做的,我 认为 )然后将该行附加到脚本的末尾。

以下代码非常适合将文件中不存在的行注入该文件。

VIMLINE='color industry'
grep -qxF "$VIMLINE" ~/.vimrc || echo $VIMLINE | sudo tee --append ~/.vimrc

那么我的问题是,我如何修改上面的内容:查找一行(或一行的一部分)并删除该行,然后重新注入该行(以保证该行被添加到文件末尾)?

新问题的答案:

sed -i '/'$VIMLINE'/{h;d}; $G' ~/.vimrc

老问题的回答: 您实际上是在 $VIMLINE 上搜索,请改用 grep -qxF "$VIMLINE" ... 搜索“颜色行业”。