Boolean expressions are used to determine the occurrence of the given condition. Awk provides basic logical operators or and, or and not logic operators. In this tutorial, we will look basic usages of these logical operators. Boolean logic operators mainly used with conditional statements where we can get more information from the following tutorial.
Awk If, If Else , Else Statement or Conditional Statements
Example Data
While doing logic examples we will use following test data which file name is students.txt
. The numbers are exam1, exam2, and exam3.
ismail 45 80 75 ali 80 90 100 elif 80 95 45
Awk AND Logic
and
logic is used to check if all provided Boolean values are True
. We use &&
to specify and logic. The basic usage is providing two Boolean values and we can also provide more than 2 values. The best practice while using and
logic is surrounding the operators and values with parenthesis ( ... )
. The syntax of and operator is like below.
(CONDITION && CONDITION && ... )
In this example, we will check two exam1 and exam2 grades if they are over 50
we will print the name of the student.
$ awk '{ if( $2>50 && $3>50 ) print $1 }' students.txt
As we can see we check columns 2
and 3
which matches with exam1
and exam2
Awk OR Logic
OR
logic is used to check given conditions and if one of the conditions is true the whole or logic will return true. We will use || signs to specify OR logic. The syntax of OR logic is like below.
(CONDITION || CONDITION || ... )
In this example, we will check all three exam degrees and find students who have to get a degree lower than 50 at least one time.
$ awk '{ if( $2<50 || $3<50 || $4<50 ) print $1 }' students.txt
$2
, $3
and $4
matches with exam1
, exam2
and exam3
we check all scores with Or logic if one of them is below 50 . If so we print the student name.
Awk NOT Logic
NOT logic provides given boolean value reverse. It is simple if given values is True
after NOT logic return value will be false. If given boolean value is False
after NOT logic return value will be true. Look following list. We will use !
sign as NOT operator.
- ! True = False
- ! False = True
Syntax is like below. Using parenthesis will made the script more reliable.
!(CONDITION)
Now time to example we print student names those name is not ismail
.
$ awk '{ if( !($1=="ismail") ) print $1 }' students.txt
Here our conditions is $1=="ismail"
and reversed with !
NOT operator.