sed -i 's#a#b#g' test.txt  将test.txt中a替换为b,s为替换,g为全局替换,不加g会只替换每行第一个

sed -i '4adddd' test.txt  在test.txt中的第四行后一行添加四个d

sed -i '4iaaaa' test.txt 在test.txt中的第四行前面一行添加四个a

sed -i '1,5addd' test.txt 在test.txt中第一到第五行后面一行添加三个d

sed -i '1,+5addd' test.txt在test.txt中的第1到第6行后面一行添加三个d

sed -i '1~2addd' test.txt在test.txt中的1、3、5、7、9后面一行添加三个d

以上也适用于删除d和修改替换c的情况

sed -i '/aaa/abbb' test.txt在有关键字aaa的行后添加一行3个d

sed -i '/cca/izzzz' test.txt 在有关键字cca的一行前添加一行4个z

sed -i '/aaa/d' test.txt 删除包含关键字aaa的行

sed -i '/^bbb/d' test.txt 删除以bbb开头的行

 sed -i '2cddd' test.txt将第二行替换为三个d

修改替换关键字可以用sg来实现 

sed -i 's#aaa#bbb#g' test.txt 将test.txt中的aaa全局替换为bbb    #为定界符,定界符可以用/ : |来代替,aaa可以用#来代替。

sed里面单引号和双引号 双引号里面可以用变量,单引号不能用变量,如果单引号里面用到变量,需要把变量再用单引号比如 sed 's#'$a'#'$b'#g' test.txt

利用sed批量改文件名

将上图中文件名中的sed批量去掉

ls *.sh|sed -r 's#(^.*)sed.sh#mv & \1.sh#g'|bash

思路为单独列出文件名中的‘sed’,后面去掉。&代表前面分隔符(#)之间的内容,\1是后向引用,代表前面小括号的内容,&存放原文件名,\1.sh存放修改后的文件名。后面传递给bash命令才能执行

批量重命名也可以用命令rename来执行

rename 原字符串 目标字符串  文件

参数 
原字符串:将文件名需要替换的字符串; 
目标字符串:将文件名中含有的原字符替换成目标字符串; 
文件:指定要改变文件名的文件列表

比如以上批量重命名文件可以写作

rename "sed" " " *注意引号之间的空格