In other programming languages there often has a bool or boolean type. I can create a boolean type variable and use the not operator to toggle it. I can toggle it many times and get a series of true, false, true, false ...

In awk there is no boolean type. Only empty string and the number 0 are considered false. All other values are true. In this case what should I do if I want to do operation A on line 1, 3, 5... and operation B on line 2, 4, 6... The task will very easy if we have a boolean type variable and I can simply not it.

  • 1
    not sure if bool types are there, but you can use bitwise operations.. for example: /condition/{a = xor(a,1)}
    – Sundeep
    Commented Sep 8, 2016 at 8:46
  • 1
    Does modulo division help? NR%2 {do A} !(NR%2) {do B} Commented Sep 8, 2016 at 8:48

1 Answer 1


see How does awk '!a[$0]++' work?

basically use a=!a this will negate a turning 0 to 1 and 1 to 0.

you can test with

ls | awk '{a=!a; if ( a ) printf "good %s\n",$0 ; else printf "bad\n";}'

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .