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

Hilesh, 1001
Bharti, 1002
Aparna, 1003
Harshal, 1004
Keyur, 1005
———————-

时间: 2024-10-28 14:38:15

Unix sed如何向文件中增加一行的相关文章

dom4j向xml文件中增加数据后缺少结尾标签

问题描述 dom4j向xml文件中增加数据后缺少结尾标签 public boolean insertStudent(Student student) { boolean flag=false; SAXReader saxReader=new SAXReader(); try { Document doc=saxReader.read(new File("dbstudent.xml")); Element rootEle=doc.getRootElement(); Element sno

修改内容-C语言修改文件中某一行

问题描述 C语言修改文件中某一行 RT,在vc2010下,做的学生管理系统.没有采用链表. 已经找到所要修改的行,并且修改成功,在内存中已经看到修改后的结果,并用fflush写回文件. 但是文件就是没有改变,上代码,求帮助,已经卡在这一天半了. #include"head_1.h" void change_stu(int id,char name[20],float score) { FILE *fp2; char str[20]; char a[20]; int ch2; int i

利用C语言替换文件中某一行的方法_C 语言

文件中存贮的内容如下所示: 11 1122 0 1122 * * 0 0 22 222 0 222 * * 0 0 33 333 0 333 * * 0 0 通过使用下面的几个函数,fopen,fprintf,fscanf,fseek,ftell . 具体的函数函数原型如下所示: FILE*fopen(const char*filename,const char *mode); int fprintf(FILE*stream,const char *format,...) int fscanf(

sed删除文件中的一行内容的脚本代码_linux shell

先来看下原始文件的内容: 复制代码 代码如下: root@localhost ~]# cat file.txthello worlda:b:c -h -na:b:c -h -n sed根据条件删除相关的行: 复制代码 代码如下: [root@localhost ~]# sed -i '/a:b:c -h -n/d' file.txt[root@localhost ~]# cat file.txthello world sed根据条件进行相关内容的替换: 复制代码 代码如下: [root@loca

Python linecache.getline()读取文件中特定一行的脚本_python

比如: import linecacheprint linecache.getline('2.1_open.py', 4) 将返回我上一节事例代码文件2.1_open.py的第4行文字,输出结果:f = open('/home/evergreen/桌面/test') 查看linecache中的实现(我用的是Ulipad,所以直接将光标停留在linecache处,按F6键)

字符串-linux中查找文件中中文逗号

问题描述 linux中查找文件中中文逗号 .csv文件中有一个字段是一个中文的逗号",",可是我把这个文件放到linux系统中用getline() 读取一行到一个字符串中str, 再用str.find() 查找这个逗号,为什么找不到啊? 怎么才能找到??? 求大牛解答,急急急!!! 解决方案 完全可以用linux cat指令加上grep进行查找,十分方便 解决方案二: 你用unicode方式读取文件.然后用wstring来查找 同时你的linux需要支持中文 解决方案三: 我是要读取文

使用Java在文件里插入一行

在文件里增加一行的唯一方法就是读取原始文件,然后写入到一个临时文件,同时写入要插入的数据.然后删除原始文件,再把临时文件改名为原始文件名. package net.java2000.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; impo

arraylist-不能在文件中写入新的行

问题描述 不能在文件中写入新的行 我想把一串字符串写入一个文件中: private void writeScoreToFile(BlastScore result) { try{ FileWriter fstream = new FileWriter(getFilesDir() + CaptureActivity.BLAST_SCORES,true); BufferedWriter out = new BufferedWriter(fstream); out.write(Integer.toSt

XML 文件中出现 & ? ?

这几天在跟一个公司合作的项目中,对方提供了RSS接口,通过这个接口,在我们网站展现出来,但是对方RSS中出现了一些麻烦的字符,比如 &,®,™ 等.这些字符放到XML中,如果不做特殊处理,就会有错误产生.比如下面的XML:<item>&</item>在IE 浏览器,以及一些解析用的DOM中解析这个片段,就会产生错误.在W3C的技术规范中,也可以看到这样的字符不允许出现:http://www.w3.org/TR/2001/REC-xml-c14n-20010315比如