In this part, we will learn on AWK Built in Variables:
FS - Input field separator variable:
By default, AWK assumes that fields in a file are separated by space.
If the fields in the file are separated by any other column separator, we can use the FS variable for that.
Example 5. awk 'BEGIN {FS=":"} {print $2}' test_file
OR
awk -F: '{print $2} test_file
output will be as below.
39 AAAA
15 BBBB
39 EEEE
39 GGGG
We can use -F option for to change column separator in command to display output.
awk -F: '{if ($2 == "") print $1 ": no password!"}'
We can easily move from one column separator to another column separator using awk.
#!/bin/awk -f
{
if ($1 == "#START") {
FS=":";
} else if ($1 == "#STOP") {
FS=" ";
} else {
#print the Roman number in column 3
print $3
}
}
OFS - Output field separator variable:
Example 6. awk '{print $4,$5}' test_file
When we use print statement in awk, it uses default column seperator while displaying result.
The output of this command will be
unixrun 0
unixrun 175
unixrun 430
unixrun 428
We can change this default column seperator by using the OFS variable as
awk 'BEGIN {OFS=":"} {print $4,$5}' test_file
output will be as below.
unixrun:0
unixrun:175
unixrun:430
unixrun:428
If I run same command in this way, it will not work same as earlier, Here no column separator showing in output.
awk 'BEGIN {OFS=":"} {print $4$5}' test_file
unixrun0
unixrun175
unixrun430
unixrun428
NF - Number of fields variable:
The NF used to get the number of fields in line of a file.
Example 7. awk '{print NF}' test_file
This will display the number of columns in each row, output as below.
9
9
9
9
NR - number of records variable:
The NR used to get the line number or no of lines in the file.
Example 8. awk '{print NR}' test_file
This will display the line numbers from 1.
1
Example 9. awk 'END {print NR}' test_file
This will display the total number of lines in the file, here output will be.
4
FILENAME - The Current Filename Variable
The last variable known to regular AWK is "FILENAME", which tells you the name of the file.
#!/bin/awk -f
# reports which file is being read
BEGIN {
f="";
}
{ if (f != FILENAME) {
print "reading", FILENAME;
f=FILENAME;
}
print;
}
FS - Input field separator variable:
By default, AWK assumes that fields in a file are separated by space.
If the fields in the file are separated by any other column separator, we can use the FS variable for that.
Example 5. awk 'BEGIN {FS=":"} {print $2}' test_file
OR
awk -F: '{print $2} test_file
output will be as below.
39 AAAA
15 BBBB
39 EEEE
39 GGGG
We can use -F option for to change column separator in command to display output.
awk -F: '{if ($2 == "") print $1 ": no password!"}'
We can easily move from one column separator to another column separator using awk.
#!/bin/awk -f
{
if ($1 == "#START") {
FS=":";
} else if ($1 == "#STOP") {
FS=" ";
} else {
#print the Roman number in column 3
print $3
}
}
OFS - Output field separator variable:
Example 6. awk '{print $4,$5}' test_file
When we use print statement in awk, it uses default column seperator while displaying result.
The output of this command will be
unixrun 0
unixrun 175
unixrun 430
unixrun 428
We can change this default column seperator by using the OFS variable as
awk 'BEGIN {OFS=":"} {print $4,$5}' test_file
output will be as below.
unixrun:0
unixrun:175
unixrun:430
unixrun:428
If I run same command in this way, it will not work same as earlier, Here no column separator showing in output.
awk 'BEGIN {OFS=":"} {print $4$5}' test_file
unixrun0
unixrun175
unixrun430
unixrun428
NF - Number of fields variable:
The NF used to get the number of fields in line of a file.
Example 7. awk '{print NF}' test_file
This will display the number of columns in each row, output as below.
9
9
9
9
NR - number of records variable:
The NR used to get the line number or no of lines in the file.
Example 8. awk '{print NR}' test_file
This will display the line numbers from 1.
1
Example 9. awk 'END {print NR}' test_file
This will display the total number of lines in the file, here output will be.
4
FILENAME - The Current Filename Variable
The last variable known to regular AWK is "FILENAME", which tells you the name of the file.
#!/bin/awk -f
# reports which file is being read
BEGIN {
f="";
}
{ if (f != FILENAME) {
print "reading", FILENAME;
f=FILENAME;
}
print;
}