Regex awk一个文件中两个单词之间的所有行,并多次出现
我正在尝试获取WHERE和GROUP之间的一些SQL代码中的所有行,我有下面的代码,这使我获得WHERE和GROUP之间第一次出现的文本,但是我要查找的文本有多个出现Regex awk一个文件中两个单词之间的所有行,并多次出现,regex,bash,awk,Regex,Bash,Awk,我正在尝试获取WHERE和GROUP之间的一些SQL代码中的所有行,我有下面的代码,这使我获得WHERE和GROUP之间第一次出现的文本,但是我要查找的文本有多个出现 awk'/WHERE/{p=1}p/GROUP/{exit}filename.txt 输出 什么地方 一些SQL代码 按某物分组 在我想要输出的文件中,代码有多个部分以WHERE开头,以groupby结尾 有人能帮忙吗?在awk中,最好按照以下几点做: awk '/WHERE/,/GROUP/' filename.txt a
awk'/WHERE/{p=1}p/GROUP/{exit}filename.txt
输出
什么地方
一些SQL代码
按某物分组
在我想要输出的文件中,代码有多个部分以WHERE开头,以groupby结尾
有人能帮忙吗?在
awk
中,最好按照以下几点做:
awk '/WHERE/,/GROUP/' filename.txt
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
这在range操作符中是不可能的。尝试将
p
重置为0
您已经超过组
条件。我很好奇-您认为您的代码是什么意思?如果你知道这意味着什么,那么改变来做你想做的事情是非常简单的。通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读。