Sed原本是unix下的一个文本编辑工具,但是在windows下却可以帮我们提高工作和办事效率,好啦不多说啦让我们进入今天的正题。

首先了解它的格式,在unix下它的格式为sed e ''但是在windows下这样是不行的,应该是sed -e ""双引号的格式.

 

一、替换删除指定字符:

前几天在网上找克莱德曼的钢琴曲,好不容易找到了把下载地址复制下来一看是这样的,如图1: 

                                      图1

这只是其中的一小部分,这怎么办呢?也许有人会说用记事本的替换功能呗,替换功能只能对")http"这样的                

字符串有效,那些重复的内容对于替换不就没用了吗?现在请出sed:

1.命令:sed -e "s/目标字符串/替换字符串/g" 文件

(这里的g是指进行全文替换)

Sed -e "s/)h/h/g" a.lst|more>>b.lst

如图2:

                        图2

命令后面的"|more"是为让输出的时候自动换行,命令中的g在这里是可以不要的,但是g前面的那个'/'是不能少的否则会报错的。在下面这个例子中g的有无是完全两个意思:

如图3:

                   图3

如果我们写成sed -e "s/:/2008/" a.txt,这只是将文本中的每行的第一行分号:替换成2008,但要是写成sed -e "s/:/2008/g" a.txt这样以来就成了全部替换了,这一点大家要注意哦。

接下来让我们删除多余的行,sed -e "/)/d" b.lst|more>>c.lst

如图4

                          图4

(由于sed修改文件时不会把源文件的内容改变,所以为了看到实际结果只能定向输出)

好啦,快去试试去下你们喜欢的东西吧。

2.命令:sed -e "s/目标字符串/替换字符串/位数" 文件

有了上面的那个命令这个就相对简单了它的功能是替换指定行的具体的那一位。

 

二、想删哪行你说了算

有没有遇到过这种情况,在一篇文章里或者是数据里想删除许多不相邻的行,要是少的话用手动的完全可以,要是多呢?呵呵,没事我们有sed.

命令:sed -e "要删的行号d[;要删的行号d]..." 文件

每个命令之间要用分号;分开,有这样一个文本如图5:

图5

让我们删除它的1,3,5行,sed -e "1d;3d;5d" a.txt 结果如图6

图6

如果你想删连续的行的话那当然也是可以的啦,sed -e "1,5d" a.txt这样以来1-5行就没有啦。

如果你要编辑的文章中有很多的空行,sed也可以帮助我们一次删除,sed -e "/^$/d" a.txt

(^意思是与行首匹配,$意思是与行末尾匹配)呵呵这里就不给大家截图了。

 

三、加入你想要的内容

既然说sed是一个文本编辑工具,那么它能做的也不只是替换和删除,它还可以添加内容到文件中。

在每一行的开始添加相同的内容,

sed -e "s/^/欢迎大家来到http:\/\/sucre.blog.51cto.com/" a.txt

图7

 

是不是觉得有点眼花了,这里面用到正则表达式的相关内容,为了使网址中的'//'能够正确的输出所以在它们的前面加上了'\'这是为了告诉sed,'//'不参加编辑请直接将它输出。

能在文首添加就可以在末尾添加啊,只需将'^'换成'$'就可以了,要是在文中添加的话那就成了替换了。

 

sed的功能远不止这些,希望以上内容对大家有帮助。