如何使用SED命令从文件中删除行?实现详解

2021年11月10日16:26:51 发表评论 1,052 次浏览
sed 命令被称为流编辑器。sed 命令在 Linux 中用于进行基本的文本转换。 Linux 的许多基本命令之一也是 sed 命令,它在文件操作中起着至关重要的作用。它有多种用途;一些主要内容如下。 SED命令从文件中删除行?删除或删除与给定模式匹配的特定行。
  • 使用正则表达式删除行。
  • 根据文件的位置,删除特定行。
因此,如果你正在考虑使用 sed 命令从文件中删除行,请从头到尾阅读我们的文章。我们将向你简要介绍去除线条的方法,以及SED命令删除行示例。

如何使用 SED 命令从文件中删除行?

SED命令如何删除文件中的行?我们将在本文中使用不带 -i 的 sed 命令,因为它是一篇演示文章。类似的方法是“试运行”选项,它显示文件的所有值,而无需进行任何更改。 使用 sed 命令,我们可以使用 -i 删除取决于环境的行。 为了显示 sed 命令,我们创建了一个名为 LinuxhintOS.txt 的文件。为了提供更好的信息,我们将这些行号包含在以下内容中。

根据位置从文件中删除行

这部分将解释如何使用 sed 命令根据位置从文件“LinuxhintOS.txt”中删除行。 首先,使用以下命令打开文件:
cat ~/<foldername>/<filename>
如何使用SED命令从文件中删除行?实现详解
SED命令从文件中删除行?现在执行以下命令删除第一行:
sed 'Nd' file
在上面的命令中: N – 文件中的“第 N”行 D – 删除文件 因此,让我们在示例中执行此命令以从文本文件中删除第 10 行:
cd Documents

sed '10d' LinuxhintOS.txt
如何使用SED命令从文件中删除行?实现详解

SED命令删除行示例:从文件中删除最后一行

如果我们必须从文件中删除最后一行,而不是上面使用的语法中的“N”,我们将使用“$”。这里,$ 代表最后一行。
sed '$d' file
在此之后,我们的文件将更改为这样的内容。

一起删除第一行和最后一行

如果我们想去掉第一行和最后一行,就必须结合上面两条命令。
sed 'Nd;$d' filename
使用此命令,我们的第一行和最后一行同时从文件中删除。
如何使用SED命令从文件中删除行?实现详解
如上图所示,第一行和最后一行已从文本文件中删除。

删除一系列行

sed 命令可以删除任何范围的行。为此,我们只需要输入“最小”和“最大”行号。 在本例中,我们将删除 4 到 7 个数字的行。
sed '4,7d' file
删除这些范围的行后,我们的文件将如下所示。
如何使用SED命令从文件中删除行?实现详解

删除多行

SED命令如何删除文件中的行?sed 还可以删除一组中的多行。如你所见,我们删除了本示例中的第三行、第六行、第八行和最后一行。
sed '3d;6d;8d;$d' file
应用上面编写的 sed 命令时,我们的文件“LinuxhintOS.txt”中会发生以下变化。
如何使用SED命令从文件中删除行?实现详解

删除指定行或指定范围以外的行

SED命令从文件中删除行?通过 sed 命令,我们将那些命令中没有定义的文件行移除,即除了描述的那些行之外的行被移除。 从这个文件中,我们将删除除数字 4 到 7 之外的其余行。
Sed '4,7! d' file
在这里,“!”的标志 表示我们不应该从文件中删除这个特定数字的行。 !– 用于保留文件中的特定行数 在此之后,我们的文件将如下所示:
如何使用SED命令从文件中删除行?实现详解

SED命令删除行示例:删除空白或空行

下面写的 sed 命令从适当的文件中删除空白或空行。
sed '/^$/d' file
由于我们的文件中没有空白或空行,因此没有发生任何更改:
如何使用SED命令从文件中删除行?实现详解

根据模式从文件中删除行

在第二部分,我们将看到在 sed 命令的帮助下,我们如何删除类似模式的行。

删除包含模式的行

在示例中,以下命令从文件“LinuxhintOS.txt”中删除与“System”模式匹配的行。
sed '/System/d' file
如何使用SED命令从文件中删除行?实现详解
所以,我们需要删除那些“不可用”的行。这就是我们将执行以下命令的原因:
sed '/Not Available/d’ LinuxhintOS.txt
如何使用SED命令从文件中删除行?实现详解

删除包含一个或多个字符串的行

通过 sed 命令,我们可以从文件“LinuxhintOS.txt”中删除与“Not Updated”或“Not Available”模式匹配的行,该命令如下所示:
如何使用SED命令从文件中删除行?实现详解
sed '/Not Updated\|Not Available/d' LinuxhintOS.txt
如何使用SED命令从文件中删除行?实现详解

删除以特定字符开头的行

我们可以通过 sed 命令删除以任何字符开头的所有行。我们创建了一个名为“LinuxhintOS.txt”的新文件,内容如下:
如何使用SED命令从文件中删除行?实现详解
SED命令如何删除文件中的行?下面的 sed 命令将删除所有以 'A' 字符开头的行。
sed '/^A/d' file
我们将从我们的文件中删除这些以“A”和“L”开头的行。为此,我们将使用以下命令。
sed '/^[AL]/d' file
使用 sed,我们删除所有以“A”开头并以字符串“Linux”结尾的行。
sed '/^(A).*(Linux)/d' file

删除以指定字符结尾的行

SED命令删除行示例:此 sed 命令删除所有以“m”结尾的行。
sed '/m$/d' file
以下 sed 命令将删除以 'M' 和 'X' 字符结尾的行。
sed '/[xm]$/d' file
从我们的文件中删除以“M”和“X”结尾的字符行;然后,我们的文件将如下所示。

删除所有以大写开头的行

我们将使用以下命令从文件中删除所有这些行:一个大写字母。
sed '/^[A-Z]/d' file
应用上述命令后,我们文件中以大写字母开头的所有行都将被删除,我们文件中的更改将是这样的。

删除具有指定范围的匹配模式线

SED命令从文件中删除行?在以下命令的帮助下,我们将从具有特定模式的某些已定义行中仅删除那些行。 此示例仅从文件中 1 到 6 行之间删除具有 Linux 模式的行。
sed '1,6{/Linux/d;} file
应用该命令后,我们的文件“sed – demo-1.txt”将如下所示。 仅当包含“openSUSE”模式时,我们才会使用以下 sed 命令删除第二行。
sed '2{/openSUSE/d;}' file
适当的命令将从我们的文件“sed – demo-1.txt”中删除第二行,因为它具有特定的“openSUSE”模式。 适当的命令将从我们的文件“sed – demo-1.txt”中删除第二行,因为它具有特定的“openSUSE”模式。 我们还可以使用 sed 命令删除与“系统”模式匹配的行和文件中的以下行。
sed '/System/{N;d;}' file

删除具有特定图案的线条

你可以使用 sed 命令删除遵循“CentOS”模式的所有行。
sed '/Centos/,$d' file

删除包含数字/数字的行

使用下面写的 sed 命令,我们可以删除所有包含 'digit' 的行。
sed '/[0-9]/d' file
通过对 sed 命令进行一些更改,我们将从文件中删除所有仅以数字开头的行。
sed '/^[0-9]/d' file
执行此命令后,所有以数字开头的行都将从我们的文件中删除。 同样,通过对命令进行一些更改,我们将仅从文件中删除以数字结尾的那些行。
sed '/[0-9]$/d' file

从文件中删除包含字母字符的行

SED命令如何删除文件中的行?使用 sed 命令,我们将从文件“LinuxhintOS.txt”中删除所有包含字母字符的行。
sed '/[A-Za-z]/d' file

SED命令删除行示例总结

SED命令从文件中删除行?本文展示了使用 sed 命令从文件中删除行的几个示例。我们看到在 sed 命令的帮助下,我们可以轻松地从文件中删除任何行。如果我们记住这些命令,那么我们在减少的同时节省了很多时间。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: