Linux学习笔记之sed命令

时间:2021-10-15 15:31:36

 

sed命令是一个用在对输入流进行处理的文本处理工具。掌握它能够更好地帮助管理Linux和处理日志文件。

用法:

sed [option] ‘command’ 输入流

常用option:

-n:安静模式,一般如果没有加-n选项,输入流中所有的行将会被列出,加入-n后只会列出‘command’处理过的行。一般与 command中p命令连用。

-r:默认sed只是支持一般的正则表达式,如果加上-r参数表示让sed支持扩展的正则表达式。

-i:插入,如果输入流是一个文件流,则直接在文件中修改内容而不是输出到屏幕。(慎用)

 

常用 ‘command’:

a(i):add(insert),在目标行数后一行(前一行)插入字符串。

d:delete,删除目标行。

p:print,打印目标行。

s:substitute ,用新的字符串替换 目标字符串。通常这个 s 的动作可以搭配正则表达式,且与vim中的替换类似。1,20s/old/new/g

c :替换目标行

例子:

删除:

      # sed '1d'               #删除第一行 
      # sed '$d'               #删除最后一行
      # sed '1,10d'            #删除第一行到第十行
      # sed '2,$d'            #删除第二行到最后一行

显示:

.    # sed -n '1p'            #显示第一行 
     # sed -n '$p'            #显示最后一行
     # sed -n '1,2p'         #显示第一行到第二行
     # sed -n '2,$p'         #显示第二行到最后一行

     # sed –n '/dbird/p'    #打印所有包含dbird 的行

     # sed –n '/\$/p'        #打印所有包含$符号的行

插入:

     #sed '1,3a drink tea  #在1到3行后面插入drink tea,则drink tea分别在第2,4,6行

     #sed  1,3i drink tea   #在1到3行之前插入drink tea,则drink tea分别在第1,3,5行

行替换:   

     #sed '1,2c Hi'           #将第一到二行替换为Hi

字符串替换:

     格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)
     #sed 's/dbird/vbird/g'    #替换dbird为vbird
      #sed 's/dbird//g'           #删除dbird

 

     #sed -i '/匹配字符串/d'  filename     #直接删除文件filename中的匹配的字符串