博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【sed 工具的使用】
阅读量:6953 次
发布时间:2019-06-27

本文共 1993 字,大约阅读时间需要 6 分钟。

  hot3.png

grep 工具的功能其实还不够强大,其实说白了,grep实现的只是查找功能,而它却不

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

b.打印多行打印整个文档用-n‘1,$’p

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

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

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

e.删除某行或者多行

‘d’ 这个字符就是删除的动作了,不仅可以删除指定的单行以及多行,而且还可以删除匹配

某个字符的行,另外还可以删除从某一行一直到文档末行。

f. 替换字符或字符串

上例中的’s’就是替换的命令,’g’为本行中全局替换,如果不加’g’,只换该行中出现的第一个。

除了可以使用’/’外,还可以使用其他特殊字符例如’#’或者’@’都没有问题。

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

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

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

这个就需要解释一下了,上例中用’()’把所想要替换的字符括起来成为一个整体,因为括号

在sed中属于特殊符号,所以需要在前面加脱意字符’\’,替换时则写成’\1’,‘\2’,‘\3’ 的形式。
除了调换两个字符串的位置外,笔者还常常用到在某一行前或者后增加指定内容。

h.直接修改文件的内容

sed-i‘s/:/#/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:’;
现在给出以上练习题的答案,你如果实在想不出如何操作,那你看看答案吧,请尽量多想一
下。
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

转载于:https://my.oschina.net/jiaozg/blog/93449

你可能感兴趣的文章
字串乱序 PHP&JS
查看>>
[转] gdb的基本工作原理
查看>>
可视化iOS应用程序开发的6个Xcode小技巧
查看>>
button设置边宽和圆角
查看>>
jsp初学总结
查看>>
Spring MVC的视图解析器
查看>>
[09-07]点击按钮变跟页面展示内容
查看>>
Adreno GPU Profiler
查看>>
Eclipse搭建SpringBoot之HelloWorld
查看>>
作用域
查看>>
疯狂的ASP.NET系列-第一篇:啥是ASP.NET后续
查看>>
【.Net底层剖析】3.用IL来理解属性
查看>>
UVA - 1428 Ping pong
查看>>
P2495 [SDOI2011]消耗战
查看>>
P2633 Count on a tree
查看>>
重读<软件性能测试>摘要
查看>>
毕业季
查看>>
测评报告:热门项目管理工具哪家强?
查看>>
java.sql.SQLSyntaxErrorException: ORA-00904: " ": invalid identifier错误
查看>>
vue2.0做移动端开发用到的相关插件和经验总结
查看>>