Linux Sed 教程:使用地址和模式打印文件行
让我们了解一下如何在 sed 教程的第一部分中使用地址和模式打印文件行。
Linux Sed 介绍
- sed 是一个“非交互式”的面向流的编辑器。由于它是“非交互式”的,如果需要,它可以用于自动编辑。
- 名称 sed 是流编辑器的缩写,该实用程序的许多命令源自 ed 行编辑器(ed 是第一个 UNIX 文本编辑器)。
- 这允许您编辑多个文件,或执行常见的编辑操作,而无需打开 vi 或 emacs。
- sed 从文件或其标准输入读取,并输出到其标准输出。
- sed 有两个缓冲区,称为模式缓冲区和保持缓冲区。两者最初都是空的。
Unix Sed 工作方法论
这称为一个执行周期。循环一直持续到文件/输入结束。
- 从标准输入/文件中读取整行。
- 删除任何尾随换行符。
- 将线放置在其模式缓冲区中。
- 根据提供的命令修改模式缓冲区。
- 将模式缓冲区打印到标准输出。
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
- 点赞
- 收藏
- 关注作者
评论(0)