在本教程中,我们学习了在 Linux 中将文本附加到文件末尾的不同方法。您可以在 Linux 中使用多种方法来实现此目的,但最简单的一种是将命令输出重定向到所需的文件名。使用 >> 字符,您可以将任何命令的结果输出到文本文件。
其他可以实现这一点的方法是使用 tee、awk 和 sed 等 Linux 工具。
每个基于 Unix 的操作系统都有一个“输出的默认位置”的概念。每个人都称其为“标准输出”或“stdout”,发音为标准输出。您的 shell(可能是 bash 或 zsh)一直在监视该默认输出位置。当你的 shell 在那里看到新的输出时,它会在屏幕上打印出来,这样你就可以看到它。
我们可以使用 >> 运算符将该输出重定向到文件。
程序如下:
使用echo命令将文本附加到文件末尾:
echo 'sample text line' >> filename.txt
将命令输出附加到文件末尾:
command >> filename.txt
我们可以使用这个重定向字符 >> 添加文本行,或者我们可以将数据和命令输出写入文本文件。使用此方法,如果文件不存在,将创建该文件。
例如:
$ echo "sample line" >> test.txt
$ cat test.txt
sample line
$ echo "sample line 2" >> test.txt
$ cat test.txt
sample line
sample line 2
您还可以添加数据或运行命令并将输出附加到所需文件。在此示例中,我们将使用 date 将当前日期附加到文件中,uname 命令将打印出我们正在使用的 Linux 系统的内核版本,最后使用ls命令输出当前目录结构和文件列表。
您可以使用任何可以将其结果输出到终端的命令,这意味着 Linux 中几乎所有的命令行工具。
$ date >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
$ uname -r >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic
$ ls >> test.txt
$ cat test.txt
sample line
sample line 2
Tue Jun 25 20:28:51 UTC 2019
3.13.0-170-generic
test.txt
让我们看看如何使用 tee、awk 和 sed Linux 实用程序进行附加。
Tee 命令读取标准输入并将其写入标准输出和一个或多个文件。该命令以管道中使用的 T 形分离器命名。它破坏了程序的输出,以便它可以显示和保存在文件中。
$ tee -a test.txt <<< "appended line of text"
vagrant@ubuntu-trusty-64:~$ cat test.txt
appended line of text
awk 是一个实用程序,它使程序员能够以语句的形式编写微小但有效的程序,这些语句定义要在文档的每一行中搜索的文本模式以及在找到匹配项时要执行的操作线。awk 主要用于模式扫描和处理。
$ awk 'BEGIN{ printf "another text line appended" >> "test.txt" }'
vagrant@ubuntu-trusty-64:~$ cat test.txt
another text line appended
Linux中的sed命令代表流编辑器,它可以对文件执行许多功能,如搜索、查找和替换、插入或删除。通过使用sed,您甚至可以在不打开文件的情况下编辑文件,这是在文件中查找和替换某些内容的更快方法。
$ sed -i '$a yet another text line' test.txt
vagrant@ubuntu-trusty-64:~$ cat test.txt
yet another text line
有几种方法可以一次将多行附加到文件中。
当然,您可以逐行添加:
$ echo "line 1" >> result.txt
$ echo "line 2" >> result.txt
下一个变体是在终端中输入新行:
echo "line 1
line 2
line 3" >> result.txt
另一种方法是打开文件并写入行,直到您键入 EOT:
$ cat <
line 1
line 2
EOT