Bash,将行插入文件
Bash, inject line into a file
最初我在下面有一个错误,所以我正在编辑并重新打开它。
我在向文件中注入行时遇到了一些问题。我的目标是:
- 查找该行(在本例中为
VIMLINE
)。如果该行在那里,则什么也不做(或删除该行,我需要在不同时间同时执行 'do nothing' 和 'remove the line',但不知道如何适合删除 - 删除是针对某些情况我想确保我在脚本末尾注入)。
- 如果该行不存在(这是
||
应该做的,我 认为 )然后将该行附加到脚本的末尾。
以下代码非常适合将文件中不存在的行注入该文件。
VIMLINE='color industry'
grep -qxF "$VIMLINE" ~/.vimrc || echo $VIMLINE | sudo tee --append ~/.vimrc
那么我的问题是,我如何修改上面的内容:查找一行(或一行的一部分)并删除该行,然后重新注入该行(以保证该行被添加到文件末尾)?
新问题的答案:
sed -i '/'$VIMLINE'/{h;d}; $G' ~/.vimrc
老问题的回答:
您实际上是在 $VIMLINE 上搜索,请改用 grep -qxF "$VIMLINE" ...
搜索“颜色行业”。
最初我在下面有一个错误,所以我正在编辑并重新打开它。
我在向文件中注入行时遇到了一些问题。我的目标是:
- 查找该行(在本例中为
VIMLINE
)。如果该行在那里,则什么也不做(或删除该行,我需要在不同时间同时执行 'do nothing' 和 'remove the line',但不知道如何适合删除 - 删除是针对某些情况我想确保我在脚本末尾注入)。 - 如果该行不存在(这是
||
应该做的,我 认为 )然后将该行附加到脚本的末尾。
以下代码非常适合将文件中不存在的行注入该文件。
VIMLINE='color industry'
grep -qxF "$VIMLINE" ~/.vimrc || echo $VIMLINE | sudo tee --append ~/.vimrc
那么我的问题是,我如何修改上面的内容:查找一行(或一行的一部分)并删除该行,然后重新注入该行(以保证该行被添加到文件末尾)?
新问题的答案:
sed -i '/'$VIMLINE'/{h;d}; $G' ~/.vimrc
老问题的回答:
您实际上是在 $VIMLINE 上搜索,请改用 grep -qxF "$VIMLINE" ...
搜索“颜色行业”。