北京SEO

Unix sed如何向文件中增加一行

2019/10/10/17:46:22  阅读:2022  来源:谷歌SEO算法  标签: DNS

前面我们简单介绍了一个Unix sed及Unix sed的工作机制,现在我们来讲讲Unix sed实用:如何向文件中增加一行的功能,sed 是unix中最重要的编辑器之一,注意,有之一..支持多种编辑任务,本文将实现题目的功能实例.

假定我们有一额文本文件,叫做empFile,包含了员工名字和员工id,如下:

  1. Hilesh,1001
  2. Bharti,1002
  3. Aparna,1003
  4. Harshal,1004
  5. Keyur,1005

1.如何通过sed给文件添加标题行-“Employee, EmpId”

  1. $sed‘1iEmployee,EmpId’empFile
  2. Employee,EmpId
  3. Hilesh,1001
  4. Bharti,1002
  5. Aparna,1003
  6. Harshal,1004
  7. Keyur,1005

解释:数字1,是说只对第一行执行操作,i代表在insert(熟悉vim的同学应该知道,i会在当前字符的前面插入,a是在后面插入),因此,1i就表示在将Employee,EmpId插入到第一行之前.

然后,有了标题行的文件仅仅会输出到标准输出,源文件内容并不会改变,如果需要更新源文件,可以使用重定向输出到一个临时文件,然后移动到原始文件,如果Unix系统的sed是GUN版本的,sed会有一个-i选项,可以直接实现更新源文件,如何查看版本,终端下输入sed —version即可看到,下面先执行,再查看文件,发现已经多了标题行了.

  1. $sed-i‘1iEmployee,EmpId’empFile
  2. $catempFile
  3. Employee,EmpId
  4. Hilesh,1001
  5. Bharti,1002
  6. Aparna,1003
  7. Harshal,1004
  8. Keyur,1005

2.如何在标题行之后,也就是原始第一行之前添加一行横线—“——-”

  1. $sed-i‘1a———————-‘empFile
  2. $catempFile
  3. Employee,EmpId
  4. Hilesh,1001
  5. Bharti,1002
  6. Aparna,1003
  7. Harshal,1004
  8. Keyur,1005

同1,中,1表示第一行,a表示append(附加),也就是说当读入第一行的时候在其之后添加一行,如果你使用2i作为命令也是正确的,就是指当读入第二行的时候,在其之前插入一行.

3.如何在文件尾部添加一行

  1. $sed-i‘$a———————-‘empFile
  2. $catempFile
  3. Employee,EmpId
  4. Hilesh,1001
  5. Bharti,1002
  6. Aparna,1003
  7. Harshal,1004
  8. Keyur,1005
  9. ———————-

为了在文件尾部插入一行,如果使用之前的方法就需要知道总共有多少行,而$符号则直接指明了最后一行,因此$a表示在读入最后一行的时候,在后面插入一行.

4.如何在指定的记录之后插入一条新纪录,假定我们的例子文件的内容现在是:

  1. Employee,EmpId
  2. Hilesh,1001
  3. Harshal,1004
  4. Keyur,1005
  5. ———————-

如果我想在Hilesh这个员工之后插入Bharti员工的信息,我这样做:

  1. $sed-i‘/Hilesh/aBharti,1002’empFile
  2. $catempFile
  3. Employee,EmpId
  4. Hilesh,1001
  5. Bharti,1002
  6. Harshal,1004
  7. Keyur,1005
  8. ———————-

注意看,我们这里已经不再使用数字或者其他表示行号的标识了,我们使用了一个模式,了解过正则表达式的朋友会比较熟悉,可以理解为某种规则- /Hilesh/a 这个命令表示对于每一行读入的内容,如果发现 /Hilesh/这个匹配,在该行之后插入一行,也就是说如果文件里有两行都是Hilesh员工,那么执行完上面的命令,将会附加两行内容,这里可以想想sed的工作模式,对每一行执行命令条件检测,发现匹配,就执行.

5.如何在指定记录之前插入记录呢,比如,我想在Harshal这条记录之前插入Aparna记录呢?

  1. $sed-i‘/Harshal/iAparna,1003’empFile
  2. $catempFile
  3. Employee,EmpId
  4. //phpfensi.com
  5. Hilesh,1001
  6. Bharti,1002
  7. Aparna,1003
  8. Harshal,1004
  9. Keyur,1005
  10. ———————-

广告内容

Unix sed如何向文件中增加一行 Unix sed如何向文件中增加一行 Unix sed如何向文件中增加一行

相关阅读

热门评论

Seven 绯闻SEO Seven 绯闻SEO

绯闻SEO,一个专注中小企业网站优化的SEO爱好者

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法