awk 一个文件中两个单词之间的所有行,多次出现



我正在尝试获取 WHERE 和 GROUP 之间某些 SQL 代码中的所有行,我有以下内容,这让我在 WHERE 和 GROUP 之间第一次出现文本,但之后多次出现相同的文本

awk '/WHERE/{p=1} p; /GROUP/{exit}' filename.txt

输出

WHERE something Some SQL code GROUP BY something

在我想输出的文件中,代码的多个部分以 WHERE 开头并以 GROUP BY 结束

有人可以帮忙吗?

awk最好按照以下思路做一些事情:

awk '/WHERE/{f=1} f; /GROUP/{f=0}' file

awk范围运算符,的工作方式与sed类似。但是,很难修改,并且您限制了awk可以执行的操作。

一旦您的 awk 习惯包括使用标志(而不是范围(,就会更容易在标记之间打印,例如:

$ echo "a
b
c
---
d
e
f
---
g
h" | awk '/^---$/{f= ! f; next}  f'
d
e
f

这对于范围运算符是不可能的。

awk '/WHERE/,/GROUP/' filename.txt

最新更新