How to delete an entire row if a specific column contains a zero?

awk, perl, sed

Solution

With portable sed you can do it like this:

sed '/\([^ ]\+ \+\)\{4\}0\+ /d'

This way you confine checking for zero to the fifth column.

With perl you can use auto-split, notice that you don't need to specify a condition for `$F[4]` because it is implicit:

perl -ane 'print if $F[4]'

Output in both cases:

1QWO     10      5     45    100    7.5
1R0R      6      3     15    100    8.5
1R9L      2      1      1    100    6.3
1RKI     12      6     66    100    4.6

Problem

I need to delete the rows which contains 0 value in column number 5. Before: ``` 1QWO 10 5 45 100 7.5 1R0R 6 3 15 100 8.5 1R5M 4 0 6 0 6.5 1R8S 4 0 6 0 6 1R9L 2 1 1 100 6.3 1RG8 6 0 15 0 5.8 1RJU 10 0 45 0 7.2 1RKI 12 6 66 100 4.6 ``` After: ``` 1QWO 10 5 45 100 7.5 1R0R 6 3 15 100 8.5 1R9L 2 1 1 100 6.3 1RKI 12 6 66 100 4.6 ``` Any one liner will be very helpful. I know: ``` sed '/0/d' file_name ``` but above command will delete 0 from all the columns.

Original source