首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一起学习sed(一)

Unix中的两大文本编辑处理神器 -awksed。之前我们已经介绍过了awk。

那么今天学习一些sed.

sed是stream editor的简称。sed可以在命令行通过简单的命令操作,完成十分复杂的任务,是十分强大有用的工具。

在学习sed之前,我们先建立一个如下的文本文件,以便后续练习:example.txt

基本用法

基本用法:

(提示:可左右滑动)

如果你了解sed,那么想必你最熟悉的应用就是使用s进行文本替换了。比如将example.txt中的2018替换成2019.

如果你想把exmaple.txt中的is替换成was:

非常奇怪的是第二行的is被替换成了was,而第一行的is没有被替换,但是“this”被替换成了“thwas“,这是因为在上述命令行中,sed只默认替换每一行的第一个“is”

用&表示要替换的字符

如在example.txt中,要把所有的数字加上括号

其中[0-9]只正则表达式,表示数字0-9,而&则表示你前面要替换的内容,你不知道具体是哪一个数字,所以可以用&来代替,g表示global,即不仅仅是将每行符合条件的第一处做替换,而是将所有符合条件的字符都进行替换。

再如,将每一个单词的首字母变成大写字母:

其中,\U表示将匹配项变成大写字母(\L表示变为小写字母),而&表示保留变换之后的模式。

用\1和\2表示匹配项

\1表示正则表达式中第一个括号里面的内容。

如在example.txt中,要把所有的数字加上括号,前面我们使用&符号完成的,下面还可以用\1来完成这个任务

注意正则表达式一定要用括号括起来,而且括号要有反义字符“\”

再如,我们要把每一行第一个小写字母之后的所有内容删除。

再来复杂一点的,将每一行第一个单词的首位字母互换位置:

其中\S表示非空格字符

这儿重要的记住一点:在正则表达式中用括号括起来的内容,可以依次用\1,\2,\3…(最高到9)的形式在目标字符串中引用。

FLAG区域:1、2表示第几处

前面提到,中g的作用是告诉sed要替换全部,不仅仅是每一行第一个符合条件的。

那么如果是你想替换的是仅仅是第二个满足条件的呢?那么可以在flag区域使用数字表示第几个满足条件的。如

这里的2表示将每一行的第二个数字用括号括起来。

FLAG区域:/p表示输出被修改的行

sed的参数-n表示不输出结果

如果我们在flag区域加上p,就能够之输出我们做过修改的行,其他行不会输出。所以-n和p经常联合使用

FLAG区域:/w将结果输出

使用格式为“/w 文件名“,如下将结果输出到tt.txt文件中:

注意,这里的输出仅仅是将处理过的行输出,未处理的行不会输出到tt.txt中,所以这和使用重导向”>”的输出不一样!!

FLAG区域:/I表示忽略大小写

不管大写的T,还是小写的t,都被统统替换成了HHHH。

****** 百读不如一练 ********

===== THE END ====

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181231G0M9AB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券