Linux sed命令菜鸟入门


本文首先以一个简单的sed命令应用示例,说明如何使用sed命令进行文本处理,接着从sed命令的用法、工作原理、行地址模式以及sed命令支持的脚本命令详细介绍sed命令的用法。

一个完整的sed命令使用简单示例

现在有一个待处理文件test.txt,文件中包含一系列的位图数据1和0,它们位于<Figure Begin>和<Figure End>之间,需要将它们写入一个单独的文件,并使用.FG <insert figure here> .FE替换着部分内容。替换输入文件中的<para> 标识为.LP并删除其下的空行。最后,删除输入文件中的所有空行。

处理文件内容如下:cat test.txt

  1. <para>  
  2.   
  3.   
  4. This is a test paragraph.  
  5.   
  6.   
  7. <Figure Begin>  
  8.   
  9.   
  10. 111111111111111101000000000000000000000000000000111111111111111111100000000  
  11. 000000000000000000000000000000000001111111111111111111111111111111111111111  
  12. 11111111111111111110000000000000000000  
  13.   
  14.   
  15. <Figure End>  
  16.   
  17.   
  18. <para>  
  19.   
  20.   
  21. MOre lines of text to be found after the figure.  
  22. These lines should print.  

sed脚本命令内容及解释如下:cat sedscr

  1. /<para>/{  
  2.     N                     #读入下一行,因为下一行为空行,  
  3.     c\                    #使用下面的内容替换模式空间中的内容,之所以使用N命令,也是想把<para>下面的空行删除  
  4. .LP  
  5. }  
  6. /<Figure Begin>/,/<Figure End>/{      #匹配<Figure Begin>到<Figure End>行之间的内容  
  7.     w fig.test                        #将这部分中的当前模式空间中的内容写入文件fig.test中,因为sed命令式按行读取文件内容的  
  8.     /<Figure End>/i\                  #在<Figure End>行前插入下面的内容  
  9. .FG\  
  10. <inset figure here>\  
  11. .FE  
  12.     d                                 #删除匹配的行,即删除模式空间中的内容,这样模式空间中的这部分内容不会被输出  
  13. }  
  14. /^$/d                     #删除所有空行  

sed脚本执行命令:sed -f sedscr test.txt
sed脚本执行完成后输出内容如下:

  1. .LP  
  2. This is a test paragraph.  
  3. .FG  
  4. <inset figure here>  
  5. .FE  
  6. .LP  
  7. MOre lines of text to be found after the figure.  
  8. These lines should print.  

上面简单演示了一个使用sed命令的实际例子,初学时看不懂没有关系,只需知道大概是这么个流程,然后下面会详细的解释sed命令的用法。

  • 1
  • 2
  • 3
  • 下一页

相关内容