在 Linux 中向文件追加行

评论 0 浏览 0 2019-08-27

1.绪论

在本教程中,我们将探讨在Linux中使用Bash命令向一个文件追加一行或多行的几种方法。

首先,我们将检查最常见的命令,例如 echoprintf、cat其次,我们将了解 tee 命令,这是一个鲜为人知但很有用的 Bash 实用程序。

2.2、echo命令

echo命令是Linux Bash最常见和最广泛使用的内置命令之一。通常情况下,我们可以用它来显示一个字符串到标准输出,也就是默认的终端。

echo "This line will be displayed to the terminal"

现在,我们要改变默认的标准输出,将输入字符串转到一个文件中。这种能力是由重定向操作符(>)提供的。如果下面指定的文件已经包含一些数据,那么这些数据就会丢失:

echo "This line will be written into the file" > file.txt

为了向我们的file.txt追加一行,而不覆盖其内容,我们需要使用另一个重定向操作符(>>)。

echo "This line will be appended to the file" >> file.txt

注意,‘>’和‘>>’操作符不依赖于echo命令,它们可以重定向任何命令的输出。

ls -al >> result.txt
find . -type f >> result.txt

此外,我们可以使用-e选项启用反斜杠转义的解释。因此,一些特殊字符如换行字符‘/n’将被识别,我们可以在一个文件中追加多行:

echo -e "line3\n line4\n line5\n" >> file.txt

3.printf 命令

printf命令与同名的C函数类似。它将任何参数按格式打印到标准输出。

printf FORMAT [ARGUMENTS]

让我们建立一个例子,并使用重定向操作符在我们的文件中追加一个新行。

printf "line%s!" "6" >> file.txt

echo命令不同,我们可以看到,当我们需要追加多行时,printf‘的语法更简单。在这里,我们不需要为了使用换行符而指定特殊的选项。

printf "line7\nline8!" >> file.txt

4. cat 命令

cat命令将文件或标准输入与标准输出连接起来。

它使用的语法类似于echo命令。

cat [OPTION] [FILE(s)]

不同的是,cat不接受一个字符串作为参数,而是接受一个或多个文件,并按指定的顺序将其内容复制到标准输出。

假设我们在file1.txt中已经有了一些行,我们想把它们追加到result.txt中去。

cat file1.txt >> result.txt
cat file1.txt file2.txt file3.txt >> result.txt

接下来,我们要将输入文件从命令中编辑。

cat >> file.txt

在这种情况下,cat命令将从终端读取数据,并将数据附加到file.txt

因此,让我们在终端中输入一些东西,包括新的行,然后按CTRL + D退出。

[email protected]:~/Desktop/baeldung/append-lines-to-a-file$ cat >> file.txt
line1 using cat command
line2 using cat command
<press CTRL+D to exit>

这将在file.txt.的结尾处添加两行。

5. tee 命令

另一个有趣和有用的Bash命令是tee命令它从标准输入中读取数据,并将其写入标准输出和文件中:

tee [OPTION] [FILE(s)]
tee file1.txt
tee file1.txt file2.txt

为了将输入的内容追加到文件中,而不是覆盖其内容,我们需要应用-a选项。

[email protected]:~/Desktop/baeldung/append-lines-to-a-file$ tee -a file.txt
line1 using tee command

一旦我们点击Enter,我们就会实际看到我们的同一行重复出现在我们面前。

[email protected]:~/Desktop/baeldung/append-lines-to-a-file$ tee -a file.txt
line1 using tee command
line1 using tee command

这是因为,在默认情况下,终端既是标准输入,也是标准输出。

我们可以继续输入我们想要的行,并在每一行之后点击Enter 键。我们会注意到,每一行都会在终端中被复制,也会被附加到我们的file.txt

[email protected]:~/Desktop/baeldung/append-lines-to-a-file$ tee -a file.txt
line1 using tee command 
line1 using tee command 
line2 using tee command 
line2 using tee command
<press CTRL+D to exit>

现在,让我们假设我们不想把输入的内容追加到终端,而只想追加到一个文件。这也可以通过tee命令实现。因此,我们可以使用重定向操作符将标准输入重定向到我们的file.txt

[email protected]:~/Desktop/baeldung/append-lines-to-a-file$ tee >> file.txt
line3 using tee command
<press CTRL+D to exit>

最后,让我们看一下file.txt‘的内容。

This line will be written into the file
This line will be appended to the file
line3
line4
line5
line6
line7
line8
line1 using cat command
line2 using cat command
line1 using tee command
line2 using tee command
line3 using tee command

6.结语

在本教程中,我们介绍了一些方法,这些方法可以帮助我们在Linux中向一个文件追加一个或多个行。

首先,我们学习了echo、printf cat Bash命令,并学习了如何将它们与重定向操作符结合起来,以便将一些文本追加到文件中。我们还学习了如何将一个或多个文件的内容追加到另一个文件。

第二,我们研究了不太知名的tee命令,它已经有一个内置的机制,可以将一些文本追加到文件中,而且不一定需要重定向操作符。

最后更新2023-10-10
0 个评论
标签