我需要从一个巨大的文件中提取两个匹配模式之间的特定行。
假设pattern1
(文件中唯一)匹配特定内容line # n
,pattern2
(文件中不唯一)匹配之后的line # m
下一个立即匹配项line # n
。然后我要提取之间的所有行,包括line #n to #m
样本文件内容
***************************************************************************
text line # n-2
text line # n-1
********************************* Results *********************************
SUCCEEDED
...
...
some text
***************************************************************************
text line # m+1
text line # m+2
***************************************************************************
期望的输出
********************************* Results *********************************
SUCCEEDED
...
...
some text
***************************************************************************
如果您能帮助我解决这个问题,将不胜感激
这可以是一种方法:
$ awk '/pattern1/ {p=1}; p; /pattern2/ {p=0}' file
********************************* Results *********************************
SUCCEEDED
...
...
some text
***************************************************************************
pattern1
,则使变量p = 1。p==1
。这是通过p
条件完成的。如果为true,它将执行默认的awk操作,即print $0
。否则,事实并非如此。pattern2
,则使变量p = 0。由于先后检查此条件p
,它将打印pattern2
第一次出现的行。如果要精确匹配行:
$ awk '$0=="pattern1" {p=1}; p; $0=="pattern2" {p=0}' file
$ cat a
***************************************************************************
text line # n-2
pattern1
********************************* Results *********************************
SUCCEEDED
...
...
some text
***************************************************************************
pattern2
text line # m+2
pattern2
***************************************************************************
$ awk '/pattern1/ {p=1}; p; /pattern2/ {p=0}' a
pattern1
********************************* Results *********************************
SUCCEEDED
...
...
some text
***************************************************************************
pattern2
问题内容: 我有以下格式的文本文件: 我想提取.txt文件中DELIMITER1和DELIMITER2之间的每个s块 这是我当前的无效代码: 有任何想法吗? 问题答案: 您可以使用简化这一个正则表达式中,DOTALL标志。 这也利用了非贪婪运算符,因此将找到多个DELIMITER1-DELIMITER2对的非重叠块。
问题内容: 如何从中提取字符串并使用模式匹配或其他方法。例如,如果文本是` “您好(Java)” 然后如何获得。 谢谢。 问题答案: 试试这个: 要么
问题内容: 可以说我有一个包含以下内容的文本文件 现在,我需要编写一个Python代码,该代码将读取文本文件并将内容在“开始”和“结束”之间复制到另一个文件。 我写了下面的代码。 我没有获得预期的期望输出,只是开始了。我想要得到的是开始和结束之间的所有界限。不包括开始和结束。 问题答案: 万一您的文本文件中有多个“开始”和“结束”,这会将所有数据一起导入,不包括所有“开始”和“结束”。
验证一行中是否存在“Pattern1”,并从该行开始打印,直到找到字符串“Pattern2”存在的后续行。 我想做的是将字符串“pattern1”与awk开始打印的行精确匹配,并通过验证行中是否存在“pattern2”来检测awk停止打印的行(没有精确匹配)。因此,基本上,我希望对第一个模式进行精确匹配,并对第二个模式保留上面命令的匹配行为。
我必须用下面的长字符串。如何提取介于“url=”和“,”之间的所有值,以便获得以下数组? 我尝试了以下方法,但它只给我第一次出现,但我需要它们。谢谢!
请让我知道这里出了什么问题。需要找出HH:MM:SS格式的不同之处。