如何在 Linux 中在文件的每一行之后添加字符串?


介绍

我们有时需要快速更改文件,最好是从命令行进行。一个例子是在文件的每一行末尾添加一个字符串。

在本文中,我们将探讨使用各种 Linux 命令来实现此目的的几种方法。

本文将始终使用以下示例文件 language.txt:

pi@TTP:~ $ touch language.txt

示例

将创建一个名为 language.txt 的文件。

pi@TTP:~ $ cat > language.txt

借助带 `>` 的 `cat` 命令,我们可以将数据插入文件。如果我们打开 language.txt 文件,您将得到以下输出。

输出

Hindi
English
Chinese
Spanish

我们将研究各种技术,将短语“是一种很好的学习语言”添加到我们的 language.txt 文件每一行的末尾。

使用 sed

在 Linux 中,sed(流编辑器)是一个强大的内置实用程序。它可用于执行文件功能,例如查找和替换、搜索、插入和删除。

示例

让我们来看一个简单的例子,使用`sed`命令来完成给定的任务:

$ sed -e 's/$/ is a good language to learn/' -i language.txt
$ cat language.txt

借助 sed 命令,您可以在文件每一行之后添加一个字符串,您可以使用 cat 命令查看输出。

输出

Hindi is a good language to learn
English is a good language to learn
Chinese is a good language to learn
Spanish is a good language to learn

使用 sed 执行许多文件功能既简单又快捷,因为我们甚至无需打开文件即可更改文件。

使用 awk

借助 awk,我们可以通过编写语句来创建简单的程序,这些语句指定要在我们文件的每一行中查找的文本模式以及发现匹配时要执行的操作。

大多数 Unix 版本和 Unix 都包含脚本语言 awk。它是 Aho、Weinberger 和 Kernighan 的缩写,他们是 1977 年参与其构建的开发人员。

示例

$ awk '$0=$0" is a good language to learn"' language.txt > languages.txt

借助以上命令,我们可以在文件的每一行之后添加一个字符串,并将输出保存到 languages.txt 文件中。您可以使用 cat 命令查看 languages.txt 的内容。

输出

Hindi is a good language to learn
English is a good language to learn
Chinese is a good language to learn
Spanish is a good language to learn

使用 perl

perl(实用提取和报告语言)的最初目的是扫描任意文本文件,从中提取数据,并使用这些信息创建报告。它结合了 sed、awk 和 sh 的一些优点,使我们更容易更方便地为常见问题找到快速解决方案。

示例

让我们执行 perl 命令:

$ perl -pi -e 's/$/\ is a good language to learn./' language.txt

输出

Hindi is a good language to learn.
English is a good language to learn.
Chinese is a good language to learn.
Spanish is a good language to learn

该命令的输出不会显示在标准输出上。要查看更改,我们可以直接对输入文件使用 cat 命令。我们不需要创建新文件,因为 perl 直接对输入文件进行更改。

使用 echo

众所周知,echo 命令将文本输出到标准输出 (STDOUT)。

虽然 echo 命令的行为在不同的 shell 之间略有不同,但我们将在这里重点介绍 bash 内置版本。

让我们将 cat 命令与运行 echo 命令结合起来:

示例

$ cat language.txt | while read line; do echo ${line}$" is a good language to learn."; done

输出

Hindi is a good language to learn.
English is a good language to learn.
Chinese is a good language to learn.
Spainsh is a good language to learn.

结论

在本文中,我们学习了如何在 Linux 中在文件的每一行末尾添加字符串。为此,我们使用了 sed、awk、echo、perl 和其他命令。因为我们研究的方法工作方式相似,所以我们选择哪种方法取决于个人喜好。

更新于:2022年11月21日

2K+ 次查看

启动你的职业生涯

完成课程获得认证

开始
广告