input文件内容
This is a Certificate Request file:
It should be mailed to zawu@seu.edu.cn
Certificate Subject:
/0=Grid/OU=GlobusTest /OU=s impleCA-seugrid1. seu. edu.cn/OU=seu . edu. cn/CN=globus
The above string is known as your user certi ficate subject, and it uniquely identifies
this user.$88
To install this user certificate, please save this e-mail message into the following file.
/home/globus/ . globus/usercert. pem
1. 利用sed命令将input文件中的\OU字符串修改为(ou)
sed 's/\/OU/ou/gp' input
2. 利用sed命令打印input文件中除第3-8行之外的所有行,在以下三种不同选项组合下运行该命令:
(1)不带任何选项:
sed '3,8d' input
(2)只带一p选项;
sed '3,8!p' input
(3)同时带一n和一p选项
sed -n '3,8!p' input
命令总结
(1)直接的想法就是将3-8行内容删除,即delete,对应的就是d选项
(2)如果不带-n选项的话,p选项会将处理过的行打印两编,没处理过的行打印一遍。
(3)带上-n就是打印出来你想要的效果。
4、用两个不同的命令实现如下功能:将input文件中的\OU字符串修改为(ou),并在与\OU的匹配行后追加“We find \OU!”字符串。
sed -n -e 's/\\OU/(ou)/g ; s/(ou).*$/&We find \\OU/gp' input
sed -n -e 's/\\OU/(ou)/g' -e 's/(ou).*$/&We find \\OU/gp' input
命令总结:
首先,需要组合命令,有两种方式,一种是用分号隔开,一种是多个 -e 即如下所示
sed -e '命令1;命令2' 文件名
sed -e '命令1' -e '命令2' 文件名
然后是在行末追加,其实本质还是替换语句,只不过在’s//&这里/’,的开头加上&后就变成在所要替换的内容之后追加,至于行末,就是在’s/这里//′的后面加上 //' 的后面加上//
的后面加上表示行末,这样就符合在所要替换内容的行末之后追加命令如下:
sed -n 's/(ou).*$/&We find \\OU/gp' input
如果是行首的话,应该是’s/^这里/替换后的字符串&/’ 的前面加上^,并且看到替换后的字符串也就到了&符号之前了,命令如下:
sed -n -e 's/\\OU/(ou)/g' -e 's/^.*(ou).*/WE find&/gp' input
5.利用sed命令在/etc/passwd中分别查找满足以下条件的行:
(1) o字符重复任意次
sed -n '/o*/p' passwd
(2) o字符重复一次以上
sed -n '/o\{1,\}/p' passwd
(3) o字符重复两次以上
sed -n '/o\{2,\}/p' passwd