Shell 打印指定行或模式之间的文本

Shell 打印指定行或模式之间的文本,我们有时候可能需要根据某些条件打印文件的一部分,比如由指定行号或起止模式所匹配的文本范围。

Shell打印指定行或模式之间的文本

预备知识

awkgrepsed都可以根据条件打印部分行。最简单的方法是使用grep打印匹配模式的行。不过,最全能的工具还是awk

实战演练

要打印指定行或模式之间的文本,可以依照以下步骤。
(1) 打印从M行到N行之间的文本:

$ awk 'NR==M, NR==N' filename

awk也可以从stdin处读取输入:

$ cat filename | awk 'NR==M, NR==N'

(2) 把MN换成具体的数字:

$ seq 100 | awk 'NR==4,NR==6'
4
5
6

(3) 打印位于模式start_patternend_pattern之间的文本:

$ awk '/start_pattern/, /end_pattern/' filename

例如:

$ cat section.txt
line with pattern1
line with pattern2
line with pattern3
line end with pattern4
line with pattern5

$ awk '/pa.*3/, /end/' section.txt
line with pattern3
line end with pattern4

awk中使用的模式为正则表达式,本章内容可以参考awe 命令相关知识。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Shell 实例