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

linuxopen sourceoperating system

简介

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

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

本文将使用以下示例文件 language.txt -

pi@TTP:~ $ touch language.txt

示例

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

pi@TTP:~ $ cat > language.txt

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

输出

Hindi
English
Chinese
Spanish

我们将研究在 language.txt 文件的每一行末尾添加短语"is a good language to learn."的各种技巧。

使用 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 命令与 run 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 和其他命令。由于我们学习的方法工作原理相似,因此我们选择的方法取决于个人喜好。


相关文章


有用资源