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