Shell脚本学习之sed详解

http://blog.csdn.net/engledb/article/details/19623087

目录(?)[+]

在编写shell脚本的过程中,我们经常需要使用sed流编辑器和awk对文本文件进行处理。

一、什么是sed?

    sed 是一种在线编辑器,它一次处理一行内容。sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。

 

二、sed的处理过程

    sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。

   前面说到sed不会修改文件,那么现在我们可以知道是为什么了?是因为sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

补充知识:

    在使用sed的过程中,我们经常会听到“定址”,那么什么是“定址”呢?

    定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。

1、地址是一个数字,则表示行号;是“$"符号,则表示最后一行。

例如:

[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. sed -n '3p' datafile   #只打印第三行  

 

2、只显示指定行范围的文件内容

例如:

[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. sed -n '100,200p' mysql_slow_query.log  # 只查看文件的第100行到第200行  

 

3、地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。

例如:

[plain] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. sed '2,5d' datafile  
  2. #删除第二到第五行  
  3.   
  4. sed '/My/,/You/d' datafile  
  5. #删除包含"My"的行到包含"You"的行之间的行  
  6.   
  7. sed '/My/,10d' datafile  
  8. #删除包含"My"的行到第十行的内容  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值