使用AWK或grep删除CSV文件中的每隔一行

use*_*591 -1 unix bash awk grep

我有这样一个文件:

1000_Tv178.tif,34.88552709  
1000_Tv178.tif,  
1000_Tv178.tif,34.66987165  
1000_Tv178.tif,  
1001_Tv180.tif,65.51335742  
1001_Tv180.tif,  
1002_Tv184.tif,33.83784863  
1002_Tv184.tif,  
1002_Tv184.tif,22.82542442  
1002_Tv184.tif,  
Run Code Online (Sandbox Code Playgroud)

如何使用简单的Bash命令将其设为这样?:

1000_Tv178.tif,34.88552709    
1000_Tv178.tif,34.66987165    
1001_Tv180.tif,65.51335742  
1002_Tv184.tif,33.83784863   
1002_Tv184.tif,22.82542442
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要删除所有其他行,从第二行开始.

谢谢!

koj*_*iro 5

考虑到你真正想要的输出,hek2mgl(删除)的答案是在正确的轨道上.

awk -F, '$2'
Run Code Online (Sandbox Code Playgroud)

这就是说,打印第二个字段有值的每一行.

如果第二个字段值,但只是要排除的空格,请尝试以下操作:

awk -F, '$2~/.*[^[:space:]].*/'`
Run Code Online (Sandbox Code Playgroud)

你也可以用sed做到这一点:

sed '/,$/d'
Run Code Online (Sandbox Code Playgroud)

其中说,删除以逗号结尾的每一行.我确信有更好的方法,我避免sed.

如果您确实要明确删除其他所有行:

awk 'NR%2'
Run Code Online (Sandbox Code Playgroud)

这就是说,打印模数为2的行号不为零的每一行.如果你真的想要删除每一个偶数行,它实际上并不重要,它是一个以逗号分隔的文件.