我正在尝试获取 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