知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

sed工具的使用

发布时间:2014-09-05 15:32:28作者:知识屋


grep 工具的功能其实还不够强大,其实说白了,grep实现的只是查找功能,而它却不
能实现把查找的内容替换掉。以前用vim的时候,可以查找也可以替换,但是只局限于在文
本内部来操作,而不能输出到屏幕上。sed工具以及下面要讲的awk工具就能实现把替换的
文本输出到屏幕上的功能了,而且还有其他更丰富的功能。sed和awk都是流式编辑器,是
针对文档的行来操作的。 www.zhishiwu.com
a.打印某行 sed-nnpfilename 单引号内的n是一个数字,表示第几行


b.打印多行打印整个文档用-n1,p

c. 打印包含某个字符串的行

上面grep中使用的特殊字符,如^,,.,*等同样也能在sed中使用。

d.-e 可以实现多个行为

e.删除某行或者多行

d 这个字符就是删除的动作了,不仅可以删除指定的单行以及多行,而且还可以删除匹配
某个字符的行,另外还可以删除从某一行一直到文档末行。 www.zhishiwu.com

f. 替换字符或字符串

上例中的s就是替换的命令,g为本行中全局替换,如果不加g,只换该行中出现的第一个。
除了可以使用/外,还可以使用其他特殊字符例如#或者@都没有问题。

现在思考一下,如何删除文档中的所有数字或者字母?

有意思吧,[0-9]表示任意的数字。这里你也可以写成[a-zA-Z]甚至[0-9a-zA-Z]

g.调换两个字符串的位置

这个就需要解释一下了,上例中用()把所想要替换的字符括起来成为一个整体,因为括号
在sed中属于特殊符号,所以需要在前面加脱意字符/,替换时则写成/1,/2,/3 的形式。
除了调换两个字符串的位置外,笔者还常常用到在某一行前或者后增加指定内容。

h.直接修改文件的内容
sed-is/:/#/g test.txt ,这样就可以直接更改test.txt文件中的内容了。由于这个命令可以
直接把文件修改,所以在修改前最好先复制一下文件以免改错。
sed常用到的也就上面这些了,只要你多加练习就能熟悉它了。为了能让你更加牢固的
掌握sed的应用,笔者留几个练习题给你,希望你能认真完成。
1.把/etc/passwd 复制到/root/test.txt,用sed打印所有行;
2.打印test.txt的3到10行;
3.打印test.txt 中包含root的行;
4.删除test.txt 的15行以及以后所有行;
5.删除test.txt中包含bash的行;
6.替换test.txt 中root为toor;
7.替换test.txt中/sbin/nologin为/bin/login
8.删除test.txt中5到10行中所有的数字;
9.删除test.txt 中所有特殊字符(除了数字以及大小写字母);
10.把test.txt中第一个单词和最后一个单词调换位置;
11.把test.txt中出现的第一个数字和最后一个单词替换位置;
12.把test.txt 中第一个数字移动到行末尾;
13.在test.txt 20行到末行最前面加aaa:;
现在给出以上练习题的答案,你如果实在想不出如何操作,那你看看答案吧,请尽量多想一
下。 www.zhishiwu.com
1. /bin/cp/etc/passwd /root/test.txt; sed-n'1,$'p test.txt
2. sed-n'3,10'p test.txt
3. sed-n'/root/'p test.txt
4. sed'15,$'d test.txt
5. sed'/bash/'d test.txt
6. sed's/root/toor/g'test.txt
7. sed's#sbin/nologin#bin/login#g' test.txt
8. sed'5,10s/[0-9]//g'test.txt
9. sed's/[^0-9a-zA-Z]//g'test.txt
10. sed's//(^[a-zA-Z][a-zA-Z]*/)/([^a-zA-Z].*/)/([^a-zA-Z]/)/([a-zA-Z][a-zA-Z]*$/)//4/2/3/1/'
test.txt
11. sed
's#/([^0-9][^0-9]*/)/([0-9][0-9]*/)/([^0-9].*/)/([^a-zA-Z]/)/([a-zA-Z][a-zA-Z]*$/)#/1/5/3/4/2#'
test.txt
12. sed's#/([^0-9][^0-9]*/)/([0-9][0-9]*/)/([^0-9].*$/)#/1/3/2#' test.txt
13. sed's/^.*$/&aaa/'test.txt

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜