目录
2.5 在test.txt 文件中不以#开头的行的行首增加#号
6.4 删除test.txt 中所有特殊字符(除了数字以及大小写字母)
6.5 删除test.txt 文件中所有以空白开头的行行首的空白字符
6.6 删除test.txt 文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
1、sed命令匹配文本内容进行替换
#-i 可以直接在原始文本中匹配替换,s/匹配内容/需要替换的内容/g ,g是以一行为全局,有g说明每行中匹配到的都需要替换,没有g说明,只需要替换每行中的第一个匹配到的。
sed -i 's/pool 2.rhel.pool.ntp.org iburst/#pool 2.rhel.pool.ntp.org iburst/' ./chrony.conf
修改前:
修改后:
=========================================================================
2、添加
2.1 向匹配到的内容的上一行或者下一行添加内容
# -i 会对原始文本进行修改。向word的上一行添加xiaoxiao
sed -i '/word/i xiaoxiao' 1.txt
#向word的下一行添加heihei
sed -i '/word/a heihei' 1.txt
2.2 向包含/的内容的上一行或者下一行添加内容
#如果匹配的内容是包括/的需要用\。a是向后一行添加,i是向前一行添加。
sed -i '/#allow 192.168.0.0\/16/a heihei' 1.txt
如果需要替换的内容包含/,我们除了用 \ 进行转义,我们还可以把分隔符进行替换。我们常用的命令是 : sed -i ‘s///g’ xxxx 就可以把 / 这分隔符替换成其他的,比如说 # 或者 + 等
2.3 在test.txt 5行到末行最前面加’aaa:’
2.4 在test.txt每一行行首增加#号
2.5 在test.txt 文件中不以#开头的行的行首增加#号
=========================================================================
4、在sed命令中使用变量
#如果需要在sed命令中使用变量,那么就需要用引号包裹变量。如果变量含有特殊字符,就需要转义字符来处理特殊字符。
read -p "请输入一个网段:" allow_net
sed -i '/heihei/a '$allow_net'' 1.txt
=========================================================================
5、打印
5.1 打印所有行
sed -n 是 sed 命令的一个选项,其中 -n 表示 "quiet" 或 "silent",它告诉 sed 不要自动打印模式空间的内容。通常,sed 在处理完每一行后都会自动打印出结果,但使用 -n 选项后,只有通过特定命令或指令显式要求打印时,才会输出结果。这在需要精确控制输出的情况下非常有用。
5.2 打印test.txt的3到10行;
5.3 打印test.txt 中包含’root’的行
=========================================================================