sed命令被称为流编辑器。sed命令在Linux中用于进行基本的文本转换。
sed命令也是Linux的许多基本命令之一,它在文件操作中起着至关重要的作用。它有很多用途,其中一些主要用途如下。
移除或删除符合给定模式的那一行。
- 删除带有正则表达式的行。
- 根据文件的位置,删除一个特定的行。
所以,如果你正在考虑使用sed命令从文件中删除行,请从头到尾阅读我们的文章。我们将向你简要介绍一下删除行的方法
如何使用SED命令从文件中删除行?
在这篇文章中,我们将使用不带-i的sed命令,因为它是一篇示范文章。一个类似的方法是 "干运行 "选项,它显示文件的所有值,而不做任何修改。
使用sed命令,我们可以通过使用-i来删除取决于环境的行。
为了显示sed命令,我们创建一个名为LinuxhintOS.txt的文件。为了提供更好的信息,我们在下面的内容中包括这些行号。
根据位置从文件中删除行
这一部分将解释使用sed命令从文件'LinuxhintOS.txt'中根据其位置删除行。
首先,用下面的命令打开该文件。
cat ~/<foldername>/<filename>

现在执行下面的命令来删除第一行。
sed 'Nd' file
在上面的命令中。
N- 文件中的 "第N "行
D- 删除该文件
所以,让我们在我们的例子中执行这个命令,删除文本文件中的第10行。
cd Documents
sed '10d' LinuxhintOS.txt

删除文件中的最后一行
如果我们必须从文件中删除最后一行,我们将使用'代表最后一行。
sed '$d' file
在这之后,我们的文件将变成这样的内容。
把第一行和最后一行一起删除
如果我们想删除第一行和最后一行,我们必须把上面的两个命令结合起来。
sed 'Nd;$d' filename
使用这个命令,我们的第一行和最后一行都会同时从文件中删除。

正如你在上图中看到的,第一行和最后一行已经从文本文件中被删除。
删除一个范围的行
sed命令可以删除任何范围的行。为此,我们只需要输入 "最小 "和 "最大 "的行数。
在这个例子中,我们将删除从4到7个数字的行。
sed '4,7d' file
删除这些范围的行后,我们的文件将看起来像这样。

删除多行
sed也可以在一个集合中删除多行。正如你所看到的,我们在这个例子中删除了第三、第六、第八和最后一行。
sed '3d;6d;8d;$d' file
当应用上面写的sed命令时,在我们的文件'LinuxhintOS.txt'中发生了以下变化。

删除指定的行或指定的行范围以外的行
通过sed命令,我们从文件中删除那些在命令中没有定义的行,也就是说,除此之外的行被删除。
从这个文件中,我们将删除除数字4到7以外的其余行。
Sed '4,7! d' file
在这里,"!"的符号代表我们不应该从文件中删除这个特定数字的行。
! - 用于保留文件中的特定行数
在这之后,我们的文件将看起来像这样。

删除空白或空行
下面写的sed命令可以从相应的文件中删除空白或空行。
sed '/^$/d' file
由于我们的文件中没有空白或空行,所以没有发生任何变化。

根据模式从文件中删除行
在第二部分,我们将看到,在sed命令的帮助下,我们如何删除类似模式的行。
删除含有模式的行
在这个例子中,下面的命令从文件 "LinuxhintOS.txt "中删除了符合 "System "模式的行。
sed '/System/d' file

因此,我们需要删除那些含有 "不可用 "的行。这就是为什么我们要执行下面的命令。
sed '/Not Available/d’ LinuxhintOS.txt

删除包含一个或几个字符串的行
通过sed命令,我们可以从文件'LinuxhintOS.txt'中删除符合 "未更新 "或 "不可用 "模式的行,该命令是这样的。

sed '/Not Updated\|Not Available/d' LinuxhintOS.txt

删除以特定字符开头的行
我们可以通过sed命令删除所有以任何字符开头的行。我们创建了一个名为 "LinuxhintOS.txt "的新文件,内容如下。

下面的sed命令将删除所有以'A'字符开头的行。
sed '/^A/d' file
我们将从文件中删除以'A'和'L'开头的这些行。为此,我们将使用以下命令。
sed '/^[AL]/d' file
使用sed,我们删除所有以 "A "开头、以 "Linux "结尾的行。
sed '/^(A).*(Linux)/d' file
删除以指定字符结尾的行
这条 sed 命令删除了所有以 "m "结尾的行。
sed '/m$/d' file
下面的 sed 命令将删除以 "M "和 "X "字符结尾的行。
sed '/[xm]$/d' file
以'M'和'X'结尾的字符行被从我们的文件中删除;然后,我们的文件将看起来像这样。
删除所有以大写字母开头的行
我们将使用以下命令从文件中删除所有这些行:大写字母。
sed '/^[A-Z]/d' file
应用上述命令后,我们文件中所有以大写字母开头的行将被删除,我们文件中的变化将是这样的。
删除指定范围内的匹配模式行
在下面这个命令的帮助下,我们将只删除一些定义的具有特定模式的行。
这个例子只删除了文件中1到6行之间具有Linux模式的行。
sed '1,6{/Linux/d;} file
应用该命令后,我们的文件'sed - demo-1.txt'看起来会是这样的。
我们将用下面的sed命令删除第二行,只有当它包含 "openSUSE "模式时。
sed '2{/openSUSE/d;}' file
适当的命令将从我们的文件'sed - demo-1.txt'中删除第二行,因为它有一个特定的模式 "openSUSE"。
适当的命令将从我们的文件'sed - demo-1.txt'中删除第二行,因为它有一个特定的模式 "openSUSE"。
我们还可以使用sed命令删除文件中与 "system "模式相匹配的一行以及下面的一行。
sed '/System/{N;d;}' file
删除具有特定模式的行
你可以使用sed命令删除所有符合 "CentOS "模式的行。
sed '/Centos/,$d' file
删除包含数字/位数的行
使用下面写的sed命令,我们可以删除所有包含'数字'的行。
sed '/[0-9]/d' file
通过在sed命令中做一些修改,我们将从文件中删除所有那些只以数字开头的行。
sed '/^[0-9]/d' file
在这个命令之后,所有以数字开头的行都将从我们的文件中被删除。
同样,通过对命令进行一些修改,我们将只从文件中删除那些以数字结尾的行。
sed '/[0-9]$/d' file
从文件中删除含有字母的行
使用sed命令,我们将从文件'LinuxhintOS.txt'中删除所有包含任何字母字符的行。
sed '/[A-Za-z]/d' file
总结
这篇文章展示了几个使用sed命令从文件中删除行的例子。我们看到在sed命令的帮助下,我们可以很容易地从文件中删除任何行。如果我们记住了这些命令,那么我们就可以在减少时节省大量的时间。