awk在不消耗它的情况下获取下一行

awk在不消耗它的情况下获取下一行,awk,Awk,例如,我使用awk搜索特定的单词,比如说joker。当我找到这个单词时,我需要在下一行检查,如果还有第二个单词,让我们说batman。但如果我有这样一个文件,就会出现问题: joker batman joker batman 在此文件中,awk在第一行查找joker。然后,我使用getline检查第二行是否有batman。问题是,如果我这样做,awk将直接转到第三行,并将错过第二行的joker awk有没有一种方法可以在不消耗文件的情况下获取文件的下一行 关于输出,我想打印找到两个单词的行。在

例如,我使用
awk
搜索特定的单词,比如说
joker
。当我找到这个单词时,我需要在下一行检查,如果还有第二个单词,让我们说
batman
。但如果我有这样一个文件,就会出现问题:

joker
batman joker
batman
在此文件中,
awk
在第一行查找
joker
。然后,我使用
getline
检查第二行是否有
batman
。问题是,如果我这样做,
awk
将直接转到第三行,并将错过第二行的
joker

awk有没有一种方法可以在不消耗文件的情况下获取文件的下一行

关于输出,我想打印找到两个单词的行。在本例中,输出为:

1-joker 
2-batman joker
我的预期产出是:

1-joker 
2-batman joker

2-batman joker 
3-batman
它在数组中加载整个文件,并在
for
循环中执行匹配逻辑


它在数组中加载整个文件,并在
for
循环中执行匹配逻辑。

您的要求非常不明确。要从发布的示例输入中获得所需的输出,只需执行以下操作:

$ awk -v OFS='-' 'NR>1{print NR-1, prev ORS NR, $0 ORS} {prev=$0}' file
1-joker
2-batman joker

2-batman joker
3-batman

如果这不是您想要的,那么编辑您的问题以澄清您的需求,并提供更好地说明您需求的示例输入/输出。

您的需求非常不明确。要从发布的示例输入中获得所需的输出,只需执行以下操作:

$ awk -v OFS='-' 'NR>1{print NR-1, prev ORS NR, $0 ORS} {prev=$0}' file
1-joker
2-batman joker

2-batman joker
3-batman

如果这不是您想要的,那么编辑您的问题以澄清您的需求,并提供更好地说明您需求的示例输入/输出。

您的问题的答案是否定的。但是如果您向我们展示您的预期输出,我很确定我们可以向您展示另一种方式。如果文件大小<您的可用ram,您可以将文件保存在内存中(awk的数组),并在循环中执行逻辑。我只想打印两行及其行号。我将编辑我的帖子并编写我的预期输出。
awk
可能是错误的工具。它主要用于表格输入。@ceving-胡说八道。你的问题的答案是否定的。但如果你向我们展示你的预期输出,我很确定我们可以向你展示另一种方法。如果文件大小<你的可用ram,你可以将文件保存在内存中(awk的数组),并在循环中执行逻辑。我只想用行号打印两行。我将编辑我的帖子并编写我的预期输出。
awk
可能是错误的工具。它主要用于表格输入。
$ awk -v OFS='-' 'NR>1{print NR-1, prev ORS NR, $0 ORS} {prev=$0}' file
1-joker
2-batman joker

2-batman joker
3-batman