如何在Linux中添加到一个文件结束
在本教程中,我们将在Linux中将文本添加到文件末尾的不同方式。
我们可以使用Linux中的多种方法实现这一点,但最简单的方法是将命令输出重定向到所需的文件名。
使用>>字符,我们可以将任何命令的结果输出到文本文件。
可以实现这方面的其他方式,是使用TEE,AWK和SED等Linux工具。
将命令或者数据的输出重定向到文件结束
基于UNIX的操作系统的每个基于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
将命令数据输出结果添加到文件结尾
我们还可以添加数据或者运行命令并将输出追加到所需的文件。
在此示例中,我们将使用日期将当前日期添加到文件,uname命令将打印出kernel版本的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命令用于Stream Editor,它可以在搜索,查找和替换,插入或者删除等文件上执行大量功能。
通过使用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