天天看点

sed

sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送到屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序。

打印某行

格式:sed -n 'n'p filename 单引号内的n是一个数字,表示第几行。-n是只显示我们要打印的行。p将结果打印出来。

sed -n '/root/'p test.txt

sed

sed打印出来没有颜色显示,grep打印有颜色显示。

sed同样可以使用{}、+、?、|、()这些符号,使用时必须加上脱义符\。(使用.*不用加脱义符)

加上-r参数时可以不用脱义符。

sed

把所有行都打印出来

sed -n '1,$'p test.txt  #$指行的结尾。

sed

指定一个区间打印

sed -n '1,3'p test.txt

#打印第一到三行,单个数字n为打印第几行。

sed

查找以某个字符串开头或结尾

sed

注意:打印包含某个字符串的时候需要使用//将字符串放到里面。例如 sed -n '1'p test.txt 这条命令是打印第一行。

sed -n '/1/'p test.txt 这条命令是打印含有字符1的行。

-e选项可以实现多个行为

sed

加上i参数后,不区分大小写。

sed

删除指定的行

使用d参数,d表示删除动作

sed '1'd test.txt #删除文件的第一行。

sed '1,20'd test.txt #删除文件的1至20行。

sed

这个删除操作进阶是在显示器屏幕上不显示这些行而已,并没有对文档进行操作。

sed

删除某个字符串匹配的行

sed '/nologin/'d test.txt #删除含有nologin字符串的行。

sed

-i 参数,直接修改文件的内容

sed -i '1,20'd test1.txt #将文件test1.txt中的1到20行删除

sed

替换字符或字符串

s就表示替换的动作。参数g表示本行全局替换,如果不加g则只替换本行出现的第一个。

除了使用/作为分隔符外,还可以使用@和#作为分隔符。

sed '1,2 s /ot/to/g' test.txt

#将文档中第1、2行中所有的ot替换成to

sed

不加参数g就只替换第一个ot

sed

删除文件中的所有字母或所有数字

就是将文件中的所有字母或数字替换成空。

sed 's/[0-9]//g' test.txt #删除文件中所有数字

sed

sed 's/[a-za-z]//g' test.txt#删除文件中所有字母

sed

调换两个字符串的位置

sed

在某一行前面加上字符串

sed

a,i都是新增

a是目前的下一行  i是目前的上一行

sed '2a drink tea' test.txt #在文件第二行后增加一行

sed '2i drink beer' test.txt #在文件第二行前增加一行

sed
sed
sed