文章目录
- -i∶直接修改读取的档案内容,而不是由萤幕输出。(原内容改变)
- -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来(原内容不会改变)
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行插入)
sed ‘1a drink tea’ ab #第一行后增加字符串"drink tea"
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作
s 替换∶,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法
#取代
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行插入);
sed “2i\oldboy” person.txt #在第2行前面插入oldboy
匹配字符‘/ /,/ /p’[root@oldboyedu ~]# sed -n ‘/^ root/,/^halt/p’ /etc/passwd
sed -n ‘/ruby/p’ ab | sed ‘s/ruby/bird/g’ #替换ruby为bird
sed -n ‘1s#root#oldboy#gp’ 2.txt # 把第一行的root替换为oldboy
sed -n ‘/root/s#root#oldboy#gp’ 2.txt # 把匹配到的root行 进行替换
[root@oldboyedu oldboy]# sed ‘1d;2d;4d’ person.txt
103,Alex,COO
105,feixue,CIO #显示删除1,2,4行内容,中间用分号
sed ‘1,2d’ ab #删除第一行到第二行
sed ‘1a drink tea’ ab #第一行后增加字符串"drink tea"
sed ‘1,3a drink tea’ ab #第一行到第三行后增加字符串"drink tea"- -r:使用正则
sed -r n ‘s#(oldboy)(oldgirl)(boy)#\1\2\3#gp’ oldboy.txt
其中,\1表示第一个括号的内容,即oldboy,\2表示第二个括号的内容,即oldgirl,\3表示第三个括号的内容,
- 1次或 1次以上
? 0次或1次
- 例子
[root@centos7 tmp]# cat -n /etc/fstab | sed -n ‘2,6p’ #显示第2到第6行
2 #
3 # /etc/fstab
4 # Created by anaconda on Tue Jul 30 12:52:31 2019
5 #
6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’
[root@centos7 tmp]# cat -n /etc/fstab|sed -n ‘2p;6p’ #显示第2行和 第6行
2 #
6 # Accessible filesystems, by reference, are maintained under ‘/dev/disk’
sed ‘/hello/aworld\nwestos’ westos 表示在含有hello 后面一行追加 world westos,但是有\n表示换行
sed ‘/hello/iworld\nwestos’ westos 表示在含有hello行的前面插入world westos,\n表示换行
sed ‘/hello/cwestos\nworld’ westos 表示把含有hello的行替换为westos world,\n表示换行
替换框架 sed -i "1,3s# 要修改的 # 修改成的 # ’ 1.txt
- 编辑/etc/passwd文件,把所有的字符串/sbin/nologin替换成/bin/bash(请使用sed命令)
- 批量创建10个用户(student01 student02 … student10),
并且十个用户要设置初始密码
初始密码必须是随机数(6位随机数)
利用一条命令完成操作(sed)