您的位置:首页 > 运维架构 > Linux

Linux26期 7月4日预习笔记

2020-02-05 08:05 176 查看

 9.4/9.5 sed

一,打印某行

sed命令的格式为:sed -n 'n'p filename ,单引号内的n是一个数字,可以使用命令sed -n '1,$'p filename ,如下

去掉-n是有差异

要想把所有行打印出来,可以使用命令sed -n '1,$'p filename 

#sed -n '1,$'p 文件名

另外,我们也可以指定一个区间打印,

#sed -n '1,3'p 文件名

二,打印包含某个字符串的行

这种用法类似于grep,在grep中使用特殊字符(如^,$, . , * 等)同样也能在sed中使用,如下

#sed -n '/^1/'p test.txt

 

#sed -n '/in$/'p test.txt

 

#sed -n '/r..o/'p test.txt

 

#sed -n '/ooo*/'p test.txt

 

sed命令加上-e选项可以实现多个行为,如下

#sed -e '1'p -e '/111/'p -n test.txt

 

三,删除某些行

示例命令如下:

#sed '1'd test.txt

 

#sed '1,3'd test.txt

 

#sed '/oot/'d test.txt

 

四,替换字符或者字符串

#sed '1,2s/ot/to/g' test.txt

上例中的参数s就表示替换的动作,参数g表示本行全局替换,如果不加g则替换本行出现的第一个,这个用法其实和vim的替换大同小异。

除了可以使用/作为分隔符外,我们还可以使用其他特殊字符,例如#和@。如下:

#sed 's#ot#to#g' test.txt

 

#sed 's@ot@to@g' test.txt

 

如何删除文档中所有的数字或者字母,示例命令如下

#sed 's/[0-9]//g' test,txt

[0-9]表示任意的数字。这里你也可以写成[a-zA-Z]或者[0-9a-zA-Z]

#sed 's/[a-zA-Z]//g' test.txt

五,调换两个字符串的位置

#sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1' test.txt

小括号内的sed中属于特殊符号,必须在前面加转义字符\,替换时则写成类似\1,\2或\3的形式。上例中用()把想要替换的字符打包成了一个整体。有这个转义字符\,会让这个表达式看起来乱糟糟的,有个方法可以省略它

#sed -r 's/(rot) (.*)(bash)/\3\2\1/' test.txt

这个-r选项让这个表达式更加清晰了。除了调换两个字符串的位置,还常用sed在某一行前后增加指定内容。如下

#sed 's/^.*$/123$/123&/' test.txt

 

六,直接修改文件内容

#sed -i 's/ot/to/g' test.txt

这样就可以直接更改test.txt文件的内容了,但必须注意,在修改前最好先备份一下文件,一面改错。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3851620/blog/1840337

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chougenong2883 发布了0 篇原创文章 · 获赞 0 · 访问量 89 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: