Linux Sed 教程:使用地址和模式打印文件行

举报
Tiamo_T 发表于 2021/12/30 16:48:47 2021/12/30
【摘要】 让我们了解一下如何在 sed 教程的第一部分中使用地址和模式打印文件行。

让我们了解一下如何在 sed 教程的第一部分中使用地址和模式打印文件行。

Linux Sed 介绍

  • sed 是一个“非交互式”的面向流的编辑器。由于它是“非交互式”的,如果需要,它可以用于自动编辑。
  • 名称 sed 是流编辑器的缩写,该实用程序的许多命令源自 ed 行编辑器(ed 是第一个 UNIX 文本编辑器)。
  • 这允许您编辑多个文件,或执行常见的编辑操作,而无需打开 vi 或 emacs。
  • sed 从文件或其标准输入读取,并输出到其标准输出。
  • sed 有两个缓冲区,称为模式缓冲区和保持缓冲区。两者最初都是空的。

Unix Sed 工作方法论

这称为一个执行周期。循环一直持续到文件/输入结束。

  1. 从标准输入/文件中读取整行。
  2. 删除任何尾随换行符。
  3. 将线放置在其模式缓冲区中。
  4. 根据提供的命令修改模式缓冲区。
  5. 将模式缓冲区打印到标准输出。

Sed 中的打印操作

Linux Sed 命令允许您根据行号或模式匹配仅打印特定行。“p”是用于打印来自模式缓冲区的数据的命令。

要抑制模式空间的自动打印,请使用 -n 命令和 sed。sed -n 选项不会打印任何内容,除非找到明确的打印请求。

Syntax:
# sed -n 'ADDRESS'p filename

# sed -n '/PATTERN/p' filename

让我们首先创建将在下面提到的所有示例中使用的 geekstuff.txt 文件。


# cat tiamotxt.txt
1. Linux - Sysadmin, Scripting etc.
2. Databases - Oracle, mySQL etc.
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

5 Sed 地址格式示例

Sed 地址格式 1:数字

这将仅匹配输入中的第 N 行。

# sed -n 'N'p 文件名

例如, 3p 打印输入文件 thegeekstuff.txt 的第三行,如下所示。

# sed -n '3'p tiamotxt.txt
3. Hardware

Sed 地址格式 2:NUMBER1~NUMBER2

带有“p”命令的 M~N 从第 M 行开始打印每第 N 行。

# sed -n 'M~N'p filename

例如,3~2p 从第 3 行开始,每 2 行打印一次,如下所示。

# sed -n '3~2'p tiamotxt.txt
3. Hardware
5. Storage
7. Productivity (Too many technologies to explore, not much time available)
9. Software Development

Sed 地址格式 3:START,END

带有“p”命令的 M,N 将第 M 行打印到第 N 行。

# sed -n 'M,N'p 文件名

例如,4,8p 从输入文件 thegeekstuff.txt 的第 4 行到第 8 行打印

# sed -n '4,8'p tiamotxt.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design

Sed 地址格式 4:'$' 最后一行

$ with “p”命令只匹配输入的最后一行。

# sed -n '$'p 文件名

例如, $p 仅打印最后一行,如下所示。

# sed -n '$'p tiamotxt.txt
10.Windows- Sysadmin, reboot etc.

Sed 地址格式 5:NUMBER,$

N,$ 和“p”命令从第 N 行打印到文件末尾。

# sed -n 'N,$p' 文件名

例如 4,$p 从第 4 行打印到文件末尾。

# sed -n '4,$p' tiamotxt.txt
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

6 Sed PATTERN 格式示例

Sed 模式格式 1:模式

PATTERN 可以是 unix 正则表达式。以下命令仅打印与给定模式匹配的行。

# sed -n /PATTERN/p 文件名

例如,以下仅打印与模式“Sysadmin”匹配的行。

# sed -n /Sysadmin/p tiamotxt.txt
1. Linux - Sysadmin, Scripting etc.
10.Windows- Sysadmin, reboot etc.

Sed 模式格式 2:/PATTERN/,ADDRESS


# sed -n '/PATTERN/,Np' 文件名

例如,以下打印与输入匹配的第 N 行模式的行。第 3 行与模式“硬件”匹配,因此从第 3 行打印到第 6 行。

# sed -n '/Hardware/,6p' tiamotxt.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)
5. Storage
6. Cool gadgets and websites

Sed 模式格式 3:ADDRESS,/PATTERN/

它从输入的第 N 行打印到与模式匹配的行。如果模式不匹配,它会打印到输入的末尾。

# sed -n 'N,/PATTERN/p' 文件名

例如,第 4 行与模式“Security”匹配,因此它从第 3 行打印到第 4 行。

# sed -n '3,/Security/p' tiamotxt.txt
3. Hardware
4. Security (Firewall, Network, Online Security etc)

Sed 模式格式 4:/PATTERN/,$

它从匹配给定模式的行打印到文件末尾。

# sed -n '/PATTERN/,$p' 文件名

# sed -n '/Website/,$p' tiamotxt.txt
8. Website Design
9. Software Development
10.Windows- Sysadmin, reboot etc.

Sed 模式格式 5:/PATTERN/,+N

它打印匹配模式的行和匹配行之后的下 N 行。

# sed -n '/PATTERN/,+Np' 文件名

例如,下面打印与模式 /Storage/ 匹配的第 5 行和 /Storage/ 后面的两行。

# sed -n '/Storage/,+2p' tiamotxt.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)

Sed 模式格式 6:/PATTERN/,/PATTERN/

打印两个正则表达式之间的文件部分(包括匹配的行)。

# sed -n '/P1/,/P2/p' 文件名

例如,第 5 行与“存储”匹配,第 8 行与“设计”匹配,因此打印第 5 到第 8 个。

# sed -n '/Storage/,/Design/p' tiamotxt.txt
5. Storage
6. Cool gadgets and websites
7. Productivity (Too many technologies to explore, not much time available)
8. Website Design
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。