Contents

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

1.概述

我们有时需要快速更改文件,最好是从命令行本身。在文件的每一行末尾添加一个字符串就是这样一种更改。 在本教程中,我们将研究使用sedawkechoperl执行此操作的多种方法。

2. 问题陈述

在本文中,我们将使用以下名为test.txt的示例文件:

$ cat test.txt
Python
Java
JavaScript
PHP

我们将看到如何添加字符串“是一种很棒的编程语言”。使用不同的方法到我们的test.txt文件中每一行的末尾。

3. 使用sed

sed (流编辑器)是 Linux 中一个强大的内置实用程序。我们可以使用它来执行文件的查找和替换、搜索、插入和删除等功能。

我们可以使用sed来编辑文件,甚至无需打开它们,这使得它可以轻松快捷地执行不同的文件功能。 让我们在测试文件上运行sed命令:

$ sed -i s/$/ is a great programming language./ test.txt
Python is a great programming language.
Java is a great programming language.
JavaScript is a great programming language.
PHP is a great programming language.

让我们分解此命令以了解更多信息:

  • -i:指示sed就地编辑文件
  • s : 用于替换
  • / : 用于基于正则表达式的替换
  • $ : 匹配行尾的正则表达式
  • ” is a great…”:表示我们要添加的字符串

但是我们的结果只打印在标准输出上。要保存更改,我们需要修改我们的命令:

$ sed -i s/$/ is a great programming language./ test.txt > test_sed.txt

这会将我们的更改保存到test_sed.txt文件中。

4. 使用awk

awk 是包含在 Unix 和大多数 Unix 变体中的脚本语言。它的开发者名字是 Aho、Weinberger 和 Kernighan 的缩写,他们于 1977 年建造了它。

** awk使我们能够以语句的形式编写小程序,这些语句定义要在文件的每一行中搜索的文本模式,并在找到匹配项后执行操作。** 让我们输入以下命令来添加我们的字符串:

$ awk '{print $0, " is a great programming language."}' test.txt
Python is a great programming language.
Java is a great programming language.
JavaScript is a great programming language.
PHP is a great programming language.

让我们理解命令:

  • print:用于从输入文件中输出选定的数据。
  • $0:用于匹配整行的正则表达式。
  • ” is a great…”:表示我们要在每行末尾添加的字符串。

此命令将结果输出到标准输出 (STDOUT)。

让我们修改它以将我们的更改保存到另一个文件:

$ awk '{print $0, " is a great programming language."}' test.txt > test_awk.txt

5. 使用echo

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

虽然echo命令的行为因 shell 而略有不同,但我们将在此处介绍 bash 内置版本。

让我们结合cat 命令并运行echo

$ cat test.txt | while read line; do echo ${line}$" is a great programming language."; done
Python is a great programming language.
Java is a great programming language.
JavaScript is a great programming language.
PHP is a great programming language.

和以前一样,让我们分解一下:

  • cat:我们首先使用cat来读取我们的文件。
  • | pipe:我们用它来将cat与一个附加命令结合起来。
  • while…do:我们使用 while 循环遍历文件中的每一行。
  • done:一旦完成,我们就使用它来终止我们的函数。

但是,我们的结果只打印到标准输出 (STDOUT),以保存我们的更改。

让我们将更改保存到一个名为test_echo.txt的新文件中:

$ cat test.txt | while read line; do echo ${line}$" is a great programming language." >> test_echo.txt; done

6. 使用perl

perl (Practical Extraction and Report Language)是一种**最初为扫描任意文本文件、从中提取信息并根据输入数据生成报告而优化的语言。**它结合了sedawksh 的一些特性,使我们能够更轻松、更熟悉地快速解决常见问题。

让我们运行perl命令:

$ perl -pi -e 's/$/\ is a great programming language./' test.txt

让我们仔细看看以了解更多信息:

  • -pi:我们使用这个标签来打印和保存我们的更改。
  • -e:我们使用这个标签,以便我们可以从终端执行perl代码,而不是创建一个文件。
  • s/$/:代表一个正则表达式,它以我们文件中每一行的结尾为目标。

上面的命令没有显示标准输出的结果。但是,我们可以对输入文件本身使用cat命令来查看更改。由于perl直接对输入文件进行更改,因此我们不需要创建新文件。