Awk 删除行+;如果使用UNIX指定某一行名称,则显示以下两行

Awk 删除行+;如果使用UNIX指定某一行名称,则显示以下两行,awk,grep,Awk,Grep,我正在使用UNIX,不知道是否可以使用grep或awk或其他工具来实现以下功能: 如果您有文件: Delete-me 1 2 3 4 Delete-me 1 2 3 4 Delete-me 1 2 3 4 如何获得此输出: 3 4 3 4 3 4 单向: awk '/Delete-me/ {getline;getline;getline;print;getline;print}' 3 4 3 4 3 4 另

我正在使用UNIX,不知道是否可以使用grep或awk或其他工具来实现以下功能:

如果您有文件:

Delete-me  
1  
2  
3  
4  
Delete-me  
1  
2  
3  
4  
Delete-me  
1  
2  
3  
4 
如何获得此输出:

3  
4  
3  
4  
3  
4  
单向:

awk '/Delete-me/ {getline;getline;getline;print;getline;print}'
3
4
3
4
3
4

另一种方式

awk 'NR%5==0 || NR%5==4'
3
4
3
4
3
4

逻辑是什么?什么语言?用什么语言?嗨!对不起,我使用的是UNIX(osx)。一个简单的bash行就足够了。效果非常好!谢谢。:)不客气。这是惯用的awk方法。我看到您选择了getline方法作为答案。这完全是错误的做法。想象一下,如果您必须跳过20行而不是3行,然后打印一些可变的行数,那么可以修改这两个脚本。使用非getline方法,您将3更改为20。现在,假设您要为包含单词“foo”的每一行打印“found”。使用非getline方法,可以添加一个
/foo/{print“found”}
。在您考虑使用GETLIN之前,请阅读并确保您理解了许多警告。
$ awk '/Delete-me/{c=3} c&&c--{next} 1' file
3
4
3
4
3
4