Linux三剑客之sed 快速入门

一、概述:

  sed 命令是用来对文件进行编辑用处的,比如替换行中内容,插入行,或者过滤显示等等操作。

  格式: sed -options  'handler操作'  // 其中handler内含有特殊含义的操作字符分别是 s 替换,p 打印 ,d 删除

二、常见options和操作符含义

 2.1 options 

   -i: 直接进行修改,比如 sed -i  '/^s/d' a.txt ,会直接改变原来文件(删除掉s开头的)。 

   -n :  进行过滤,只有匹配的进行显示,比如 sed -n '2p'  a.txt  //  只显示第二行

 2.2 操作符 

  s 替换 :    s/old/new/  替换一个    s/old/new/3  替换第三个   s/old/new/g 全局替换

  d 删除 :   sed -i 1,3d  或者  sed /^[abcd]/d   ### 1,3 行或者 // 内的正则表达式

  p 打印  :   2,4p    // 2-4行   1,$p // 1-结束行

 三、基本案例  : (复制一份 /etc/passwd 到test文件  cat /etc/passwd > test)

3.1 输出文本

  sed -n  1p test  // 打印第1行

  sed -n  2,5p test // 打印第五行

  sed -n 1,$p test // 打印第一行到最后一行

  sed -n '/^[a-b]/p' test  // 正则匹配 a-b开头                sed -n /^roo/p test   // 正则 roo  开头

  sed -n '/^a/p;/^r/p' test  // 正则 a或者r开头  注意 ; 可以用来设置多个操作比如 1p;2p;5p

3.2 删除文本

  sed  '1d' test // 删除第一行              sed  '2,5d' test  //删除2-5行              【没有加i,原文件不变的】

 sed '2d;4d;6d' test //删除2,4,6行         sed '1,$d' test // 全部删除

 sed  '/^s/d' test // 正则删除。。。

3.3 替换

  sed 's/root/java/' test  // root  替换成java   sed 's/root/java/2'  //第二个root替换成java

  sed 's/root/java/g' test  // root 全部替换java     sed -n 's/root/java/pg' test (只打印被替换的行)

 四、综合案例

cat test | sed -ne '1,8s/^root/java/gp'  // 1,8行,开头root替换成java,并且只打印替换的行。

sed -ne '1,15s/root/&ying/gp' test // 1,15行,root 替换成rootying

 sed -r '/^(root|bin)/d'  test  // 删除掉root或bin开头的。   
  

 

 

 

 

 

 

 

 

 

 

 

参考:

https://blog.csdn.net/jsut_rick/article/details/78287737

你可能感兴趣的:(linux基础)