1. 向指定行插入一条记录
sed -i ‘nix’ test.file 表示向test.file文件里的第n行的前面添加x内容
sed -i ‘nax’ test.file 表示向test.file文件里的第n行的后面添加x内容
sed -i ‘/m/ix’ test.file 表示向test.file文件里匹配m字符串的行的前面添加x内容
sed -i ‘/m/ax’ test.file 表示向test.file文件里匹配m字符串的行的后面添加x内容
这里的 -i 表示in front,前面, -a 表示after,后面
sed -i ‘81iexport HADOOP_CLASSPATH=/home/hadoop/Ozone/ozone-1.2.1/share/ozone/lib/ozone-filesystem-hadoop3-*.jar:\$HADOOP_CLASSPATH’ /etc/profile
sed -i ‘s#export PATH=\$ALLUXIO_HOME/bin:\$OZONE_HOME/bin\$PATH#export PATH=\$ALLUXIO_HOME/bin:\$OZONE_HOME/bin:\$PATH#g’ /etc/profile
插入多行内容,使用\n进行分割
sed -i ‘1isudo rm -r /home/hadoop/liuhj/add\nsudo rm -r /home/hadoop/add’ add
注意:所操作的行必须存在。
#在第12添加文件中的数据
sed -i ‘12r addfile’ file
2.替换匹配到的行
有些时候/分隔有问题,可使用#或?代替 ,另外字符串中特殊字符使用\进行转义
g表示会匹配每一行所有的进行替换 不加g只会替换匹配到的每一行的第一个
sed -i ‘s#原字符串#替换字符串#g’ file
sed -i ‘m,ns#原字符串#替换字符串#’ file
例如:
去掉2~5行的注释
sed -i ‘2,5s/#//‘ file
#去掉^M
sed -i ‘s/\r//g’ file
3.在行首或行尾添加字符串(一般用于注释)
sed -i ‘/匹配字符串/s/^/添加的字符串/‘ file
sed -i ‘m,ns/^/添加的字符串/‘ file
sed -i ‘/匹配字符串/s/$/添加的字符串/‘ file
sed -i ‘m,ns/$/添加的字符串/‘ file
其中,^表示行首,$表示行尾
例如:
注释掉匹配的行
sed ‘/swap/s/^/#/‘ file
注释掉1-3行
sed -i ‘1,3s/^/#/‘ file
4.删除文件中的数据
删除第N~M行,闭区间
sed -i ‘Nd’ file
sed -i ‘N,Md’ file
删除匹配的行
sed -i ‘/匹配的字符串/d’ file
删除最后一行
sed -i ‘$d’ filename
删除shell变量表示的行(配合for等语句使用)
sed -i “${var1},${var2}d” filename # 这里引号必须为双引号
