在 Linux 上将文本附加到文件的 7 种方法
让我们增加您的 Linux 知识。
有时,您有一个包含现有内容的文本文件,并且需要向其中添加更多文本。幸运的是,您可以使用多个 Linux 命令来执行此操作。其中一些命令甚至强大到足以在文件中的任何位置插入文本。
首先创建一个文本文件!
要按照本教程进行操作,您应该准备好一个测试文件,您可以在其中附加行并查看结果。要在 Linux 上创建空文件,请运行以下命令:
touch <filename>
将 <文件名> 替换为文件名。例如,我们将其命名为append.txt。我们可以使用以下命令创建文件:
touch append.txt
要查看文件的内容,请运行:
cat append.txt
目前您不会得到任何输出,文件中没有内容。现在我们有一个空文件,我们可以向其中添加一些行。
1. 使用 echo 将文本附加到文件
echo 命令主要用于在终端上显示文本,但您也可以使用它向文件添加文本。这是基本语法:
echo [OPTION] [STRING]
要使用 echo 命令向文件添加行,您需要重定向运算符 (>) 的帮助。要使用 echo 命令向文件添加文本行,请运行:
echo "string" > filename
将“字符串”替换为双引号内的实际文本。对“文件名”执行相同的操作。例如,如果您想将文本“This is a file”添加到append.txt,请运行:
echo "This is a file" > append.txt
现在,如果您尝试使用 cat 命令读取文件内容,您应该会看到该行出现在输出中。
但是,使用单个重定向运算符 (>),您将无法将行追加到文件中。如果您尝试使用相同的命令向上述文件添加另一行,它将覆盖该文件的现有内容。让我们看看实际情况。运行以下命令:
echo "Trying to append a line to the file" > append.txt
那么如何克服这个问题呢?简单的。要将一些文本附加到文件而不覆盖其内容,请使用另一个重定向运算符 (>>),如下所示:
echo "Trying to append a line to the file" >> append.txt
这次,该行将按预期附加到文件中。
2. 使用 cat 将文本追加到文件中
正如我们之前所见,cat 命令在终端上显示文件的内容。该命令的基本语法是:
cat [OPTION]... [FILE]...
与 echo 命令不同,cat 命令不能直接使用任何字符串作为参数。相反,您可以将一个文件的内容附加到另一个文件。为此,请使用如下命令:
cat file1 >> file2
将“file1”和“file2”替换为实际文件名。因此,在前面的示例中,我们可以使用以下命令将另一个文件的内容附加到append.txt 文件:
cat anotherfile.txt >> append.txt
使用 cat 命令的另一个好方法是将多个文件的内容连接到一个文件中。为此,请将文件名指定为参数,如下所示:
cat file1 file2 file3 >> file4
假设您有三个不同的文本文件,其中包含三个不同员工的信息。您需要将它们组合成一个文件。为此,请运行:
cat employee1.txt employee2.txt employee3.txt >> employees.txt
3. 使用 printf 在文件末尾添加文本
如果您有 C 编程语言经验,您可能会熟悉 printf。但您知道 printf 也是一个 Linux 工具吗?顾名思义,它可以让您将文本或数据打印到标准输出。这是基本语法:
printf FORMAT [ARGUMENT]...
要使用 printf 将文本附加到文件,请运行:
printf "Using printf to append text" >> append.txt
但是,正如您所看到的,与 echo 命令不同,文本中没有附加新行。这意味着您需要手动执行此操作。您可以在文本末尾使用“\n”转义字符。那么我们现在就使用它吧。
printf "Using printf to append text with a new line\n" >> append.txt
这次,终端提示符换行,与之前的情况不同。
4.使用sed
sed 命令是流编辑器的缩写,对输入执行基本的文本转换。有多种方法可以使用此命令。将文本附加到文件的基本语法如下所示:
sed [OPTION] [SCRIPT] [FILE...]
现在让我们看看如何将一行追加到文件中。为此,请遵循以下命令格式:
sed -i '$ a\<text to append>' <file name>
将尖括号 (<>) 内的文本分别替换为文本字符串和文件名。因此,如果您想在文件末尾添加一行,请运行:
sed -i '$ a Do not feel sed' append.txt
“-i”选项告诉系统它将使用相关文件来插入文本。 “$”符号表示该行将添加到文件末尾。在文本前面添加“a”告诉系统我们希望将该行附加到文件的现有内容中。
sed 命令的一大好处是您可以在文件中的任何位置添加文本。因此,例如,如果您想在第四行之后添加某些内容,请使用如下命令:
sed -i '4 a Appended after the fourth line' append.txt
这次,该行恰好添加在第四行之后。
5. 使用 tee 将文本附加到文件
tee 命令允许您从标准输入读取并将输出写入文件。基本语法如下:
tee [OPTION]... [FILE]...
使用 tee 命令可以通过两种方式将文本附加到文件。使用“-a”选项或双重定向运算符。我们来看看第一种方法。
tee -a append.txt
执行命令后,将进入交互模式。您可以编写任何文本,然后按 Enter 将其附加到文件中。执行此操作后,您将在终端上看到与输出相同的文本。要退出提示,请按 Ctrl+D。
在另一种方法中,终端不会重复您输入的字符串,从而使过程更加清晰。除此之外,它的工作方式是相同的。这是命令:
tee >> append.txt
正如您所看到的,当我们输入字符串时,它没有再次显示在终端中。
6. 使用 awk
awk 命令在文本操作方面非常强大。通过一些调整,您可以使用此命令向文件添加文本。该命令的语法如下:
awk 'BEGIN{print "Feeling awkward"}' >> append.txt
在上面的示例中,我们使用 awk 命令的 BEGIN 规则来打印一些文本并使用重定向运算符将其发送到我们的目标文件。
7. 使用文本编辑器附加文本
这一点相当简单。如果您不喜欢使用命令或发现很难记住语法,那么您可以简单地使用任何 Linux 文本编辑器将行追加到文本文件中。在本教程中,我们将使用 nano 文本编辑器。
要在 nano 中打开文件,请使用以下命令:
nano <filename>
请记住将上述命令中的
要追加一行,我们需要做的就是使用向下箭头键转到文件底部。如果需要创建新行,请按 Enter 键。然后输入您想要的任何文本。最后,使用 Ctrl+O 保存文件并使用 Ctrl+X 退出编辑器。
如何将命令的输出重定向到文件
如果要将命令的输出保存到文件中,可以使用重定向运算符 (>>) 来实现。假设您运行 ls 命令来获取当前目录的内容。您想要将该列表保存到名为 command.txt 的文件中。为此,请运行以下命令:
ls >> command.txt
对于任何其他 Linux 命令也是如此。您编写该命令,添加重定向运算符,然后添加要保存输出的文件名。
如何将标准输出和标准错误附加到文件
在结束之前,我们想向您展示 Linux 中另一个很酷的文件操作技巧。如果您想重定向标准输出和标准错误,请运行:
command >> file.txt 2>&1
您需要输入要捕获其输出的特定命令,而不是“命令”字段。 1和2分别是标准输出和标准错误的文件描述符。我们还使用 & 符号来指示重定向运算符之前和之后的内容是文件描述符而不是文件名。
更好的 Linux 文件操作体验
有了这些新配备的知识,您现在可以轻松地将一些文本或字符串附加到您选择的任何文件中。根据您的情况以及对Linux命令的熟悉程度,您可以选择以上任意一种方法。