在文件中“添加”一行的命令是什么?

dai*_*isy 23 bash

可能重复:
如何在多个文件的开头添加标签?

除了在标题处创建一个带有一行的临时文件,并在完成后将其移回,是否有一种标准方法可以将一些行添加到文件中?

即有时你会这样做 (echo #GPL license; cat $file) > tmpfile; mv tmpfile $file

编辑2

首先,我只是想看看是否有通用发行版附带的标准命令,我想没有

编辑

请注意,要添加的源可能不仅仅是一个固定的字符串,它也可能是一个文件,即 cat $header $file > tmpfile; mv tmpfile $file

Gur*_*uru 31

如果 sed(GNU) 适合你:

$ sed -i '1i #GPL License' file
Run Code Online (Sandbox Code Playgroud)

如果源是文件

源文件:

$ cat file1
hi
hello
$ cat file2
welcome to
Unix SO.
Run Code Online (Sandbox Code Playgroud)

sed 命令:

$ sed -i  '1{
r file1
h;d
};2{H;g;}' file2
Run Code Online (Sandbox Code Playgroud)

sed 命令后的输出:

$ cat file2
hi
hello
welcome to
Unix SO.
Run Code Online (Sandbox Code Playgroud)

sed 的 'r' 命令无法读取第一行之前的文件,因此该解决方案。第一行保留在保持内存中,file1 的内容被发送到终端,然后当第二行出现时,它与第一行一起打印。

  • OS X 上的 `sed` 版本对象为语法 `sed -i '1i #GPL License' file`,错误消息为 `invalid command code f` (7认同)
  • 这是我认为应该广泛使用“prepend”命令的情况之一。 (4认同)