Unix sed如何向文件中增加一行
发布:smiling 来源: PHP粉丝网 添加日期:2015-04-22 11:35:14 浏览: 评论:0
前面我们简单介绍了一个Unix sed及Unix sed的工作机制,现在我们来讲讲Unix sed实用:如何向文件中增加一行的功能,sed 是unix中最重要的编辑器之一,注意,有之一..支持多种编辑任务,本文将实现题目的功能实例.
假定我们有一额文本文件,叫做empFile,包含了员工名字和员工id,如下:
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
1.如何通过sed给文件添加标题行-“Employee, EmpId”
- $ sed ‘1i Employee, EmpId’ empFile
- Employee, EmpId
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
解释:数字1,是说只对第一行执行操作,i代表在insert(熟悉vim的同学应该知道,i会在当前字符的前面插入,a是在后面插入),因此,1i就表示在将Employee,EmpId插入到第一行之前.
然后,有了标题行的文件仅仅会输出到标准输出,源文件内容并不会改变,如果需要更新源文件,可以使用重定向输出到一个临时文件,然后移动到原始文件,如果Unix系统的sed是GUN版本的,sed会有一个-i选项,可以直接实现更新源文件,如何查看版本,终端下输入sed —version即可看到,下面先执行,再查看文件,发现已经多了标题行了.
- $ sed -i ‘1i Employee, EmpId’ empFile
- $ cat empFile
- Employee, EmpId
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
2.如何在标题行之后,也就是原始第一行之前添加一行横线—“——-”
- $ sed -i ‘1a ———————-‘ empFile
- $ cat empFile
- Employee, EmpId
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
同1,中,1表示第一行,a表示append(附加),也就是说当读入第一行的时候在其之后添加一行,如果你使用2i作为命令也是正确的,就是指当读入第二行的时候,在其之前插入一行.
3.如何在文件尾部添加一行
- $ sed -i ‘$a ———————-‘ empFile
- $ cat empFile
- Employee, EmpId
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
- ———————-
为了在文件尾部插入一行,如果使用之前的方法就需要知道总共有多少行,而$符号则直接指明了最后一行,因此$a表示在读入最后一行的时候,在后面插入一行.
4.如何在指定的记录之后插入一条新纪录,假定我们的例子文件的内容现在是:
- Employee, EmpId
- Hilesh, 1001
- Harshal, 1004
- Keyur, 1005
- ———————-
如果我想在Hilesh这个员工之后插入Bharti员工的信息,我这样做:
- $ sed -i ‘/Hilesh/a Bharti, 1002’ empFile
- $ cat empFile
- Employee, EmpId
- Hilesh, 1001
- Bharti, 1002
- Harshal, 1004
- Keyur, 1005
- ———————-
注意看,我们这里已经不再使用数字或者其他表示行号的标识了,我们使用了一个模式,了解过正则表达式的朋友会比较熟悉,可以理解为某种规则- /Hilesh/a 这个命令表示对于每一行读入的内容,如果发现 /Hilesh/这个匹配,在该行之后插入一行,也就是说如果文件里有两行都是Hilesh员工,那么执行完上面的命令,将会附加两行内容,这里可以想想sed的工作模式,对每一行执行命令条件检测,发现匹配,就执行.
5.如何在指定记录之前插入记录呢,比如,我想在Harshal这条记录之前插入Aparna记录呢?
- $ sed -i ‘/Harshal/i Aparna, 1003’ empFile
- $ cat empFile
- Employee, EmpId
- //phpfensi.com
- Hilesh, 1001
- Bharti, 1002
- Aparna, 1003
- Harshal, 1004
- Keyur, 1005
- ———————-
Tags: Unix sed Unix写入文件
相关文章
- ·详解Unix和Linux操作系统中Cron的用法(2014-02-28)
- ·学习linux/unix编程方法的建议,学习Linux的四个步骤(2014-03-06)
- ·Linux shell学习之:unix/linux shell的发展历程(2014-03-07)
- ·UNIX和Linux Shell正则表达式语法介绍(2014-03-08)
- ·突破极限 解决大硬盘上安装Sco Unix新思路(2014-03-09)
- ·介绍UNIX系统的五种关机方法(2014-03-09)
- ·ODU在Linux和Unix平台下的使用(2014-03-11)
- ·Unix shell 使用 Bash 中的 globstart 选项使用教程(2015-04-21)
- ·Unix平台下如何卸载gdb调试工具?(2015-04-22)
- ·Unix sed流编辑器简介 带你入门sed(2015-04-22)
- ·Unix sed编辑器如何替换文件内容(2015-04-22)
- ·Unix sed编辑器如何读写文件操作(2015-04-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)