主要分别 增删改 几类
一、增加
1. sed 5a\zzzzzzz ./passwd
在第5行后加一行zzzzzzz(仅显示修改后的文件内容是什么样子,但不是真正的做了修改操作,如要真正修改文件内容,需要加-i参数)
2. sed -i 1a\zzzzzzz ./passwd
在第1行后加一行zzzzzzz(真操作)
3. sed 1i\zzzzzzz ./passwd
在第1行前加一行zzzzzzz(仅显示,不是真操作)
4. sed -i 1i\zzzzzzz ./passwd
在第1行前加一行zzzzzzz(真操作)
二、删除
5. sed -i 1d ./passwd
删除第1行(真操作)
6. sed 2d ./passwd
删除第2行(仅显示,不是真操作)
三、修改一行
7. sed 6c\aaaaaa ./passwd
把第6行的内容修改为aaaaaa(仅显示,不是真操作)
四、替换某行字符
8. sed 's/^root$/aaaaaa/2' ./passwd
不是真操作,将passwd文件中出现的第2个root字符替换为aaaaaa,2表示第二个,若2改为g,表示global全局修改
^和$ 分别表示以…为开头 给 以…为结尾
9. sed '2,5 s/^root$/aaaaaa/g' ./passwd
这个sed命令的整体意义是:
不是真操作,将passwd文件中出现的第2-5行中全部以root开头以root结尾的行中,
这些行中所有root字符全部替换为aaaaaa后显示出来,g表示global全局修改,若去掉2,5则表示文件内所有行
这个sed命令的各参数意思是:
- '2,5': 从第2行开始,到第5行结束
- s: 表示替换,替换匹配模式为指定字符串
- ^root$: 表示匹配以root开头,以root结尾的行。^和$是正则表达式的定位符,表示行首和行尾
- aaaaaa: 替换后的字符串
- g: 表示global全局替换,即把前面指定行中所有匹配的字符串都替换,如果要替换第1个就把g改为1,以此类推,第3个就把g改为3.
- ./passwd: 要处理的文件是当前目录下的passwd文件
10. sed '2,5 s/root/aaaaaa/g' ./passwd
不是真操作,将passwd文件中出现的第2-5行中所有root字符替换为aaaaaa
11. sed '2,5 s/root/bbbbbb/' ./passwd
不是真操作,将passwd文件中出现的第2-5行中遇到第1个的root字符替换为bbbbbb
12. sed -i '1 s/root/ccccc/2' ./passwd
真操作,将passwd文件中出现的第1行中遇到的第2个root字符替换为bbbbbb