在 awk 中查找枚举中的漏洞

ron*_*ron 4 awk

我有一个看起来像这样的文件

1400a_comp      49472                       2868636.1026583919660    GOOD      
1400a_comp      49473                       2868647.1026579919650    GOOD      
1400a_comp      49474                       2868659.1026575919639    GOOD      
1400a_comp      49475                       2868670.1026571919627    GOOD      
1400a_comp      49476                       2868682.1026567819614    GOOD      
1400a_comp      49477                       2868693.1026563819603    GOOD 
Run Code Online (Sandbox Code Playgroud)

我想在文件中搜索第二个字段不加一的实例并打印行号

Arc*_*ege 5

听起来你想要这样的东西:

awk '$2!=last+1{print NR}{last=$2}' filename
Run Code Online (Sandbox Code Playgroud)

这将第二个字段与最后一个值进行比较,如果等于一个,则打印;然后保存该行的第二个字段以供下一次比较。这将始终显示第一行 (qed)。


unx*_*nut 5

我喜欢@Arcege 的解决方案,但无论如何它都会输出第一行。如果你想压制拳头线,你可以稍微修改一下他的解决方案作为

awk 'NR != 1 && $2!=last+1{print}{last=$2}' filename
Run Code Online (Sandbox Code Playgroud)