博客园  :: 首页  :: 管理

在使用shell脚本编程中,我们有时会有这样的一种需求

就是给已经存在的文件,添加一行或者多行内容(并指定添加/插入的位置,或者行号)

在shell脚本,方法可能也有多种,这里笔者这里列出自己常用的一些方法

 

方法一(推荐):使用sed命令,不得不说sed确认是linux系统中非常有用的一个命令,对于添加内容,还可以指定位置

关于位置,一般可以在最开头位置(即插入后,成为第一行),也可以插入到最后一行的前面,也可以追加到最后一行(即成为最后一行内容)

# 在第一行前插入一行,即成为第一行的内容
[qq_5201351@localhost ~]# sed -i '1i first line'  file.txt 

# 在最后一行前插入一行,即成为倒数第二行的内容
[qq_5201351@localhost ~]# sed -i '$i next-to-last line'  file.txt 

# 在最后一行后插入一行,即成为最一行的内容
[qq_5201351@localhost ~]# sed -i '$a last line'  file.txt 

注:其实也就是用到了指定行及插入/追加指令,这样其实我们还可以指定任意行号,进行插入和附加

 

方法二,可以使用echo 和 >> 的方法添加内容,不过这样只能添加到最后

[qq_5201351@localhost ~]$ echo -n  1 > file.txt
[qq_5201351@localhost ~]$ echo 2 >> file.txt
[qq_5201351@localhost ~]$ cat file.txt
12
[qq_5201351@localhost ~]$ echo -n  1 > file.txt
[qq_5201351@localhost ~]$ sed -i '$a 2' file.txt
[qq_5201351@localhost ~]$ cat file.txt
1
2
[qq_5201351@localhost ~]$

总结:可以看出echo结合>>与sed的最后一行追加,还是有点区别的(但在大部分情况下是没有区别的)

根据实际情况选择,不过笔者认为使用sed的$a追加指令的功能在有些时候可能更可靠一点,如可以用于配置文件的新配置添加。

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/14799609.html