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.