Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex awk一个文件中两个单词之间的所有行,并多次出现_Regex_Bash_Awk - Fatal编程技术网

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

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

我正在尝试获取WHERE和GROUP之间的一些SQL代码中的所有行,我有下面的代码,这使我获得WHERE和GROUP之间第一次出现的文本,但是我要查找的文本有多个出现

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
您已经超过
条件。我很好奇-您认为您的代码是什么意思?如果你知道这意味着什么,那么改变来做你想做的事情是非常简单的。通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读。