如何在Linux服务器中的文件开头添加文本

Linux服务器命令行用户对重定向操作符的概念非常熟悉,它可以将输出写到文件中,或者从文件中读取输入。
运算符'>'将输出写到一个新的文件中,或者写到一个现有的文件中;在这种情况下,它抹去了文件中之前存在的所有内容。另一方面,运算符'>>'在现有文件的末尾添加输出。然而,并没有专门的操作符将新的文本写到文件的开头。
今天,我们将看到两种在Linux服务器中向文件开头添加文本的方法:一种是用变通方法,一种是用命令。
使用echo和cat命令向文件开头添加文字
大家可能知道,echo命令将作为参数传递的任何内容打印到输出,而cat命令则将文件的内容打印到输出。
因此,我们可以把要添加的新文字传给echo,把文件传给cat,合并后把输出内容写到文件中。可以按如下方法进行。
$ x=`echo "New Text"; cat filename`
$ echo "$x" > filename
基本上,我们是将新的文本和文件中现有的内容结合起来,并将新的内容存储在一个变量中。然后,我们只需输出该变量,并将其重定向到同一个文件。
$ cat samplefile.txt
$ x=`echo "Name: John"; cat samplefile.txt`
$ cat samplefile.txt
如上图所示,新的文本被添加到了文件开头的一行。要在现有的第一行开头添加文本,使用echo的-n参数。
$ x=`echo -n "New Text"; cat filename`
$ echo "$x" > filename
使用 sed 命令将文本添加到文件的第一行。
sed(简称 "流编辑器")是Linux服务器中的一个命令行编辑器,用于执行向文件写入文本、查找和替换等操作。
sed是一个复杂的命令,有很多选项,可以用各种方式编辑文件。我们将使用 sed 的特定功能在文件的开头添加文本。
运行下面的命令,在文件的开头插入文本。
$ sed -i '1i New Text' filename
参数 -i 告诉 sed 修改文件本身。如果没有这个参数,sd会自动创建一个文件的副本,并在副本上执行所有修改。
字符串'1i New Text'的意思是:在'第1行'插入字符串'New Text'。
$ cat samplefile.txt
$ sed -i '1i Introduction' samplefile.txt
$ $ cat samplefile.txt
同样,这也是在开头的新行上添加新内容。要在现有的行上添加新的文本,运行。
$ sed -i '1s/^/New Text/' filename
基本上,指数符号('^')表示一个空字符串。开头的'1'表示sd应该考虑第1行开头的空字符串,'s'是sd命令,用来替换字符串。这里,空字符串被'New Text'替换。
$ cat samplefile.txt
$ sed -i '1s/^/Person/' samplefile.txt
$ cat samplefile.txt
我们学习了两种简单而又上口的方法,在Linux服务器中为文件的开头添加新的文字。当然,如果要手动完成,最简单的方法是用文件编辑器修改文件。但是,在脚本中,可以使用这里讨论的方法。