订阅本站
收藏本站
微博分享
QQ空间分享

在Linux系统中使用sed命令从文件中删除行,附实例解析

lilin 分类:Linux命令 时间:2020/01/13 22:09:09 评论: 加入收藏

Sed命令代表Stream Editor,用于在Linux操作系统中执行基本的文本转换。sed是重要命令之一,它在文件操作中起主要作用,它可用于删除或删除与给定模式匹配的特定行,此外,它还用于删除文件中的特定行,它还能够从文件中删除表达式,该文件可以通过指定分隔符(例如逗号,制表符或空格)进行标识。本文列出了十五个实例解析,它们可以帮助你学好sed命令,此外,当你有一些执行sed命令的要求时,它可以节省大量时间。

在Linux系统中使用sed<a href=http://8u.hn.cn/ssh/ target=_blank class=infotextkey>命令</a>从文件中删除行,附实例解析

 

前言

注意:由于它是演示目的所以,我使用不带-i选项的sed命令,它通过删除行来打印Linux终端上文件的内容。

但是,如果要在实际环境中从源文件中删除行,请在sed命令中使用-i选项。

为了测试这个,我创建了sed-demo.txt文件并添加了以下内容和行号以便更好地理解:

# cat sed-demo.txt

1 Linux Operating System

2 Unix Operating System

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

参考:cat命令_Linux cat命令使用详解:连接文件并打印到标准输出设备上。

 

在Linux系统中使用sed命令从文件中删除行的实例

1)如何从文件中删除第一行?

如果要从文件中删除第一行,请使用以下语法。

N表示文件中的第N行,sed命令中的d选项用于删除行。

句法:

sed 'Nd' file

下面的sed命令删除sed-demo.txt文件中的第一行:

# sed '1d' sed-demo.txt

2 Unix Operating System

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

2)如何从文件中删除最后一行?

如果要从文件中删除第一行,请使用以下语法。

$表示文件的最后一行。

下面的sed命令删除了sed-demo.txt文件中的最后一行:

# sed '$d' sed-demo.txt

1 Linux Operating System

2 Unix Operating System

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

3)如何从文件中删除特定行?

下面的sed命令删除sed-demo.txt文件中的第三行:

# sed '3d' sed-demo.txt

1 Linux Operating System

2 Unix Operating System

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

4)如何从文件中删除行范围?

下面的sed命令删除5到7之间的行:

# sed '5,7d' sed-demo.txt

1 Linux Operating System

2 Unix Operating System

3 RHEL

4 Red Hat

8 Debian

9 Ubuntu

10 openSUSE

5)如何从文件中删除多行?

sed命令能够删除给定的行集。

在此示例中,以下sed命令删除第1行,第5行,第9行和最后一行:

# sed '1d;5d;9d;$d' sed-demo.txt

2 Unix Operating System

3 RHEL

4 Red Hat

6 Arch Linux

7 CentOS

8 Debian

5a)如何从文件中删除指定范围以外的行?

使用以下sed命令仅从指定范围以外的文件中删除所有行:

# sed '3,6!d' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

6)如何从文件中删除空行或空行?

以下sed命令从sed-demo.txt文件中删除空行或空行:

# sed '/^$/d' sed-demo.txt

1 Linux Operating System

2 Unix Operating System

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

7)如何从文件中删除包含模式的行?

以下sed命令删除sed-demo.txt文件中与System模式匹配的行:

# sed '/System/d' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

8)如何从文件中删除包含多个字符串之一的行?

以下sed命令删除sed-demo.txt文件中与System或Linux模式匹配的行:

# sed '/System/|Linux/d' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

9)如何从文件中删除以指定字符开头的行?

以下sed命令将删除以给定字符开头的所有行。

为了测试这个,我创建了另一个名为sed-demo-1.txt的文件,其中包含以下内容:

# cat sed-demo-1.txt

Linux Operating System

Unix Operating System

RHEL

Red Hat

Fedora

debian

ubuntu

Arch Linux - 1

2 - Manjaro

3 4 5 6

以下sed命令将删除以字符R开头的所有行:

# sed '/^R/d' sed-demo-1.txt

Linux Operating System

Unix Operating System

Fedora

debian

ubuntu

Arch Linux - 1

2 - Manjaro

3 4 5 6

以下sed命令将删除所有以字符R或F开头的行:

# sed '/^[RF]/d' sed-demo-1.txt

Linux Operating System

Unix Operating System

debian

ubuntu

Arch Linux - 1

2 - Manjaro

3 4 5 6

10)如何从文件中删除以指定字符结尾的行?

以下sed命令将删除以字符m结尾的所有行:

# sed '/m$/d' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

以下sed命令将删除以字符x或m结尾的所有行:

# sed '/[xm]$/d' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

11)如何删除以大写字母开头的所有行

使用以下sed命令删除所有以大写字母开头的行:

# sed '/^[A-Z]/d' sed-demo-1.txt

debian

ubuntu

2 - Manjaro

3 4 5 6

12)如何删除文件中指定范围的匹配模式行?

以下sed命令仅在从1到6的行中出现时才删除模式Linux:

# sed '1,6{/Linux/d;}' sed-demo.txt

2 Unix Operating System

3 RHEL

4 Red Hat

5 Fedora

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

13)如何删除模式匹配线以及下一行?

使用以下sed命令删除包含模式“System”的行以及下一行:

# sed '/System/{N;d;}' sed-demo.txt

3 RHEL

4 Red Hat

5 Fedora

6 Arch Linux

7 CentOS

8 Debian

9 Ubuntu

10 openSUSE

14)如何从文件中删除包含数字的行?

下面的sed命令删除包含数字的所有行:

# sed '/[0-9]/d' sed-demo-1.txt

Linux Operating System

Unix Operating System

RHEL

Red Hat

Fedora

debian

ubuntu

下面的sed命令删除所有行以数字开头:

# sed '/^[0-9]/d' sed-demo-1.txt

Linux Operating System

Unix Operating System

RHEL

Red Hat

Fedora

debian

ubuntu

Arch Linux - 1

下面的sed命令删除所有以数字结尾的行:

# sed '/[0-9]$/d' sed-demo-1.txt

Linux Operating System

Unix Operating System

RHEL

Red Hat

Fedora

debian

ubuntu

2 - Manjaro

15)如何从文件中删除包含字母字符的行?

下面的sed命令删除包含字母字符的所有行:

# sed '/[A-Za-z]/d' sed-demo-1.txt

3 4 5 6

 

TAG:

文章评论

留言与评论(共有 0 条评论)
   
验证码: