sed
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed相关的知识,希望对你有一定的参考价值。
sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送到屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序。
打印某行
格式:sed -n ‘n‘p filename 单引号内的n是一个数字,表示第几行。-n是只显示我们要打印的行。p将结果打印出来。
sed -n ‘/root/‘p test.txt
sed打印出来没有颜色显示,grep打印有颜色显示。
sed同样可以使用{}、+、?、|、()这些符号,使用时必须加上脱义符\。(使用.*不用加脱义符)
加上-r参数时可以不用脱义符。
把所有行都打印出来
sed -n ‘1,$‘p test.txt #$指行的结尾。
指定一个区间打印
sed -n ‘1,3‘p test.txt
#打印第一到三行,单个数字n为打印第几行。
查找以某个字符串开头或结尾
注意:打印包含某个字符串的时候需要使用//将字符串放到里面。例如 sed -n ‘1‘p test.txt 这条命令是打印第一行。
sed -n ‘/1/‘p test.txt 这条命令是打印含有字符1的行。
-e选项可以实现多个行为
加上I参数后,不区分大小写。
删除指定的行
使用d参数,d表示删除动作
sed ‘1‘d test.txt #删除文件的第一行。
sed ‘1,20‘d test.txt #删除文件的1至20行。
这个删除操作进阶是在显示器屏幕上不显示这些行而已,并没有对文档进行操作。
删除某个字符串匹配的行
sed ‘/nologin/‘d test.txt #删除含有nologin字符串的行。
-i 参数,直接修改文件的内容
sed -i ‘1,20‘d test1.txt #将文件test1.txt中的1到20行删除
替换字符或字符串
s就表示替换的动作。参数g表示本行全局替换,如果不加g则只替换本行出现的第一个。
除了使用/作为分隔符外,还可以使用@和#作为分隔符。
sed ‘1,2 s /ot/to/g‘ test.txt
#将文档中第1、2行中所有的ot替换成to
不加参数g就只替换第一个ot
删除文件中的所有字母或所有数字
就是将文件中的所有字母或数字替换成空。
sed ‘s/[0-9]//g‘ test.txt #删除文件中所有数字
sed ‘s/[a-zA-Z]//g‘ test.txt#删除文件中所有字母
调换两个字符串的位置
在某一行前面加上字符串
a,i都是新增
a是目前的下一行 i是目前的上一行
sed ‘2a drink tea‘ test.txt #在文件第二行后增加一行
sed ‘2i drink beer‘ test.txt #在文件第二行前增加一行
本文出自 “网管的学习之路” 博客,请务必保留此出处http://754599082.blog.51cto.com/11510506/1983834
以上是关于sed的主要内容,如果未能解决你的问题,请参考以下文章