Linux:sed作业

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值