Awk 删除行+;如果使用UNIX指定某一行名称,则显示以下两行
我正在使用UNIX,不知道是否可以使用grep或awk或其他工具来实现以下功能: 如果您有文件: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 另
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