如何在 Linux 中追加到文件末尾

在本教程中,我們學習了在 Linux 中將文本附加到文件末尾的不同方法。 您可以在 Linux 中使用多種方法來實現這一點,但最簡單的方法是將命令輸出重定向到所需的文件名。 使用 >> 字符可以將任何命令的結果輸出到文本文件。

實現這一點的其他方法是使用 Linux 工具,如 tee、awk 和 sed。

將命令或數據的輸出重定向到文件末尾

每個基於 Unix 的操作系統都有一個“輸出的默認位置”的概念。 每個人都稱其為“標準輸出”或“stdout”,發音為標準輸出。 你的外殼(可能 bash 或 zsh)一直在觀察那個默認輸出位置。 當您的 shell 在那裡看到新輸出時,它會將其打印在屏幕上,以便您可以看到它。

我們可以使用 >> 操作符將該輸出重定向到一個文件。

程序如下:

使用 echo 命令將文本附加到文件末尾:

echo 'sample text line' >> filename.txt

將命令輸出附加到文件末尾:

command >> filename.txt

在文件末尾添加行

我們可以使用這個重定向字符 >> 添加文本行,或者我們可以將數據和命令輸出寫入文本文件。 如果文件不存在,將使用此方法創建該文件。

為了 example:

$ echo "sample line" >> test.txt
$ cat test.txt
sample line

$ echo "sample line 2" >> test.txt
$ cat test.txt
sample line
sample line 2

將命令數據輸出結果添加到文件末尾

您還可以添加數據或運行命令並將輸出附加到所需文件。 在這 example,我們將使用 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 命令行工具

Tee 命令讀取標準輸入並將其寫入標準輸出和一個或多個文件。 該命令以管道中使用的 T 型分離器命名。 它會中斷程序的輸出,以便它既可以顯示也可以保存在文件中。

$ tee -a test.txt <<< "appended line of text"
vagrant@ubuntu-trusty-64:~$ cat test.txt
appended line of text

使用 awk 命令行工具

awk 是一種實用程序,它使程序員能夠以語句的形式編寫微小但有效的程序,這些語句定義要在文檔的每一行中搜索的文本模式以及在文檔中找到匹配項時要採取的操作線。 awk 主要用於模式掃描和處理。

$ awk 'BEGIN{ printf "another text line appended" >> "test.txt" }'
vagrant@ubuntu-trusty-64:~$ cat test.txt
another text line appended

使用 sed 命令行工具

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 <<EOT >> result.txt
line 1
line 2
EOT

結論

儘管有多種方法可以將文本行或數據和命令輸出附加到文件中,但我們看到最簡單的方法是使用 >> 重定向字符。 有多種方法可以將文本附加到文件中特定行號的末尾,或使用正則表達式添加到行中間,但我們將在其他文章中介紹。

請在評論部分告訴我們您認為最好的將哪種方法附加到文件末尾。