考虑一下我有下面列出的文件。我需要选择正则表达式模式的每个实例Word A
到正则表达式模式之前的Word D
所有行。
Word A
Word B
Word C
Word D
Word E
Word F
Word G
Word A
Word H
Word I
Word D
Word J
Word A
Word K
Word D
Word L
Word M
Word A
Word D
A
请注意和之间的可变行数D
。有时,D
是下一行。这就是我需要的输出:
Word A
Word B
Word C
Word A
Word H
Word I
Word A
Word K
Word A
可以使用 awk、perl、python 或 sed 完成。只要安装在文件所在的 RHEL6 服务器上就没有关系。
使用 AWK:
这是一个
awk
解决方案正则表达式处理只需稍作更改
仅限 GNU sed:
在更复杂的情况下 - 无效块:
TXR Lisp 的
awk
宏直接支持这一点;(range)运算rng
符有九种变体,用于以各种方式从范围的开头或结尾排除记录:此外,与 Awk 的范围运算符不同,它与其他运算符结合使用。例如,假设您想要打印同时位于
foo
tobar
范围和start
to范围内的记录end
,无论这些类型的范围在数据中如何重叠:使用
awk
:如果每次都
Word D
匹配Word A
,则可以使用以下命令。sed
让我们对线路规格进行算术:读
man sed
。