sed 找出含有某個字符串的行 注釋掉


1、源文件例子

[root@node1 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Mar  1 18:32:15 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3fa2b010-61bc-480e-bd49-cb7bee120fe3 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@node1 ~]#

2、cp一個文件出來  測試修改  fs.txt

sed -i '/swap/s/^/#/g' fs.txt

3、diff看一下  ok了

[root@node1 ~]# diff fs.txt /etc/fstab
11c11
< #/dev/mapper/centos-swap swap                    swap    defaults        0 0
---
> /dev/mapper/centos-swap swap                    swap    defaults        0 0
[root@node1 ~]# cat /etc/fstab

 4、如果要冪等執行 得判斷是否被注釋過了  如果注釋過了 則不執行  不然就執行 然后再判斷  這個適合用 until 命令

until grep swap fs.txt  |grep "#" >/dev/null;do echo "disable swap" && sed -i '/swap/s/^/#/g' fs.txt;done

5、測試OK  換成實際環境 就是下面的  可以重復執行  

until grep swap /etc/fstab  |grep "#" >/dev/null;do echo "disable swap" && sed -i '/swap/s/^/#/g' /etc/fstab;done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM