sed命令使用实例学习

转载 2007年09月19日 17:20:00
[不指定 2005/06/13 10:06 | by mlsx ]
只所以看sed命令,是因为我遇到了这个一个问题。


网上有很多教程,他们发表了很多程序代码,但是作者为了解释方便,都对程序作了行号编码,就像下面这样:

1:#!/bin/bash
2:#rename file extesions
3:#
4:#     rfe old_extensions new_extension


假设这个文件名是tmp,那么我们可以使用下面的命令来去掉这个行号和冒号(:)

sed -e  s'/^[0-9]{1,}://g' tmp


不过上面的命令的命令有一个缺点,那就是如果这个行号不是数字开头,而是有空格的话,那就需要修改匹配规则,规则应该修改为匹配第一个非空白字符是数字开始,后面接一个冒号的配对。命令如下:
sed -e  s'/^[^0-9a-zA-Z]*[0-9]{1,}://g' tmp


这令我很兴奋,于是想看看sed到底有多厉害,看了以后,明白的是不是sed有多厉害,就像awk一样,他们只是把正规表达式用到了极致。



下面看看sed命令的一些用法实例:
sed 命令用法列表

1.sed -n '2'p filename
打印文件的第二行。
2.sed -n '1,3'p filename
打印文件的1到3行
3. sed -n '/Neave/'p filename
打印匹配Neave的行(模糊匹配)
4. sed -n '4,/The/'p filename
在第4行查询模式The
5. sed -n '1,$'p filename
打印整个文件,$表示最后一行。
6. sed -n '/.*ing/'p filename
匹配任意字母,并以ing结尾的单词(点号不能少)
7 sed -n / -e '/music/'= filename
打印匹配行的行号,-e 会打印文件的内容,同时在匹配行的前面标志行号。-n只打印出实际的行号。
8.sed -n -e '/music/'p -e '/music/'= filename
打印匹配的行和行号,行号在内容的下面
9.sed '/company/' a "Then suddenly it happend" filename
选择含有company的行,将后面的内容"Then suddenly it happend"加入下一行。注意:它并不改变文件,所有操作在缓冲区,如果要保存输出,重定向到一个文件。
10. sed '/company/' i "Then suddenly it happend" filename
同9,只是在匹配的行前插入
11.sed '/company/' c "Then suddenly it happend" filename
用"Then suddenly it happend"替换匹配company的行的内容。

12.sed '1'd ( '1,3'd '$'d  '/Neave/'d) filename
删除第一行(1到3行,最后一行,匹配Neave的行)

13.[ address [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]
s选项通知s e d这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。
替换选项如下:
g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出
结果。
w 文件名使用此选项将输出定向到一个文件。(注意只将匹配替换的行写入文件,而不是整个内容)

14.sed  s'/nurse/"hello "&/' filename
将'hello '增加到'nurse' 的前面。

15. sed '/company/r append.txt' filename
在匹配company的行的下一行开始加入文件append.txt的内容。

16. sed '/company/'q filename
首次匹配company后就退出sed程序 

Sed命令的基本使用

sed介绍粘贴一段wiki的介绍: sed (stream editor) is a Unix utility that parses and transforms text, using a s...
  • Gavin__Zhou
  • Gavin__Zhou
  • 2016年05月30日 11:43
  • 911

通过实例学习 tcpdump 命令

通过实例学习 tcpdump 命令 来源:https://linux.cn/article-9210-1.html tcpdump 是一个很常用的网络包分析工具,可以用...
  • jeffreynnn
  • jeffreynnn
  • 2018年01月10日 21:58
  • 97

实例学习SSIS(四)--使用日志记录和错误流重定向

导读:实例学习SSIS(一)--制作一个简单的ETL包实例学习SSIS(二)--使用迭代实例学习SSIS(三)--使用包配置实例学习SSIS(四)--使用日志记录和错误流重定向实例学习SSIS(...
  • tenghoo
  • tenghoo
  • 2009年10月20日 10:41
  • 415

sed命令的样式中使用变量

工作上需要将文本文件的某个配置信息替换掉,一直没有想到好的办法,因为我不知道怎么在sed的样式中使用变量。 sed的样式使用单引号的话就没法展开变量。从网上搜了资料才知道,也可以使用双引号的...
  • yuanlulu
  • yuanlulu
  • 2012年11月15日 10:56
  • 3109

8 基于实例的学习

存储所有实验用例,当有分类请求时,根据查询实例和已有实例的关系进行局部计算分类。不会有全局性的计算函数。归纳偏置是实例分布在欧式空间里是平滑的。 算法十四:k近邻,按属性值计算用例直接的距离,将查询实...
  • pouloghost
  • pouloghost
  • 2013年10月23日 22:52
  • 1261

Linux sed命令的用法介绍

sed命令简介 sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。 sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过...
  • jasonchen_gbd
  • jasonchen_gbd
  • 2017年01月02日 00:44
  • 4507

通过实例学习Java对象的构造过程

本文提供一个项目中的错误实例,提供对其观察和分析,揭示出Java语言实例化一个对象具体过程,最后总结出设计Java类的一个重要规则。通过阅读本文,可以使Java程序员理解Java对象的构造过程,从而设...
  • imnol
  • imnol
  • 2006年08月16日 15:30
  • 611

java学习笔记-------通过实例来学习事件

事件的实例分析; import java.awt.*; import java.awt.event.*; class Exa_8_3 extends Frame { //在构...
  • H002399
  • H002399
  • 2015年07月23日 19:42
  • 138

PB实例技巧

创建分割条用户对条(1)创建Standard Visual 用户对象,类型静态文本框(static text)并取名uo_splitbar保存(2)定义uo_splitbar的实例变量:Instanc...
  • tdtxflsh
  • tdtxflsh
  • 2007年04月06日 09:32
  • 1510

hadoop应用实例学习第一天

本博客只记录本人在学习使用hadoop时候的步骤和知识。没有系统的学习hadoop的知识,只是一些使用方法。 1、hadoop只能执行jar包,所以用eclipse编程后要生成jar包。 2、...
  • hcy19941229
  • hcy19941229
  • 2015年01月21日 19:50
  • 167
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sed命令使用实例学习
举报原因:
原因补充:

(最多只允许输入30个字)