sed学习笔记(2) - 基础篇

简介:

sed的基础语法格式:sed [-nefr][n1,n2] action

参数说明:

其中第一部分[-nefr]:

  • -n:安静模式,只有经过sed处理过的行才显示,其他的不显示,前一篇文章已经介绍过了;
  • -e:默认选项,表示直接在命令行模式进行sed操作;
  • -f:跟awk类似,可以将sed命令写入文件,用-f filename调用执行;
  • -r:使sed支持扩展正则表达式;

第二部分[n1,n2]:

  • n1,n2:可选项,指定要进行处理的行

第三部分action,常用的如下:

  • p:表示打印,打印指定的数据行时常与-n连用,之前的例子有介绍;
  • s:表示搜索替换(search);
  • a:表示添加(add),后接字符串,添加到当前行的下一行;
  • i:表示插入(insert),后接字符串,添加到当前行的上一行,与a的插入方式相反;
  • c:表示替换(replace),后接字符串,用它替换n1到n2之间的行;
  • d:表示删除(delete),其前常接n1,n2及匹配的表达式;
  • q:表示退出(quit);

下面对各action进行举例说明,测试文件与上一篇文章相同,还是sed.txt:

1.打印(p):

下面的例子打印了文件的2-5行。

 
 
  1. $ cat sed.txt | sed -n '2,5p' 
  2. 1034 7:27 
  3. 1101 7:32  
  4. 1006 7:45 
  5. 1012 7:46 

2.搜索替换(s):

下面的例子将所有以10打头的数字替换成11。

 
 
  1. $ cat sed.txt | sed 's/^10\(.*\)/11\1/' 
  2. 1134 7:26  
  3. 1134 7:27 
  4. 1111 7:32  
  5. 1106 7:45 
  6. 1112 7:46  
  7. 1128 7:49  
  8. 1151 7:51 
  9. 1129 7:57  
  10. 1142 7:59 
  11. 1108 8:01  
  12. 1152 8:05  
  13. 1105 8:12 
  14. 1105 8:13 

3.向后插入(a):

下面的例子将会在第二行后插入一串字符。

 
 
  1. $ cat sed.txt|sed '2a\ 
  2. $ wwwwww' 

在第一行输入后回车,接着第二行输入要插入的字符,以单引号结束:

输出结果:

 
 
  1. 1034 7:26  
  2. 1034 7:27 
  3. wwwwww 
  4. 1101 7:32  
  5. 1006 7:45 
  6. 1012 7:46  
  7. 1028 7:49  
  8. 1051 7:51 
  9. 1029 7:57  
  10. 1042 7:59 
  11. 1008 8:01  
  12. 1052 8:05  
  13. 1005 8:12 
  14. 1005 8:13 

4.向前插入(i):

下面的例子向第二行之前插入字符串。

 
 
  1. $ cat sed.txt|sed '2i\ 
  2. $ wwwwww   
  3. $ ' 

第一行输入后回车,在第二行输入要插入的字符串,第三行输入单引号结束。

输出结果:

 
 
  1. 1034 7:26  
  2. wwwwww 
  3. 1034 7:27 
  4. 1101 7:32  
  5. 1006 7:45 
  6. 1012 7:46  
  7. 1028 7:49  
  8. 1051 7:51 
  9. 1029 7:57  
  10. 1042 7:59 
  11. 1008 8:01  
  12. 1052 8:05  
  13. 1005 8:12 
  14. 1005 8:13 

5.替换(c):

下面的例子会替换第2-5行的内容。

 
 
  1. $ cat sed.txt|sed '2,5c\ 
  2. $ ddddddddddddddddd 
  3. $ ' 

输出结果:

 
 
  1. 1034 7:26  
  2. ddddddddddddddddd 
  3. 1028 7:49  
  4. 1051 7:51 
  5. 1029 7:57  
  6. 1042 7:59 
  7. 1008 8:01  
  8. 1052 8:05  
  9. 1005 8:12 
  10. 1005 8:13 

6.删除(d):

下面的例子会删除第2-5行的内容。

 
 
  1. $ cat sed.txt|sed '2,5d' 
  2. 1034 7:26  
  3. 1028 7:49  
  4. 1051 7:51 
  5. 1029 7:57  
  6. 1042 7:59 
  7. 1008 8:01  
  8. 1052 8:05  
  9. 1005 8:12 
  10. 1005 8:13 

7.退出(q):

下面的例子会删除第2-5行,在第6行退出。

 
 
  1. $ cat sed.txt|sed '2,5d;6q' 
  2. 1034 7:26  
  3. 1028 7:49  

 










本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1060835,如需转载请自行联系原作者
目录
相关文章
|
存储 机器学习/深度学习 Unix
sed 和 awk 使用方法 | 学习笔记
快速学习 sed 和 awk 使用方法。
|
机器学习/深度学习 Shell Perl
|
Shell Perl 自然语言处理
|
Perl Shell