Shell脚本编程中给现有文件在不同位置增加一行或多行内容的方法
在使用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追加指令的功能在有些时候可能更可靠一点,如可以用于配置文件的新配置添加。
尊重别人的劳动成果 转载请务必注明出处: