Difference between revisions of "Linux command: awk"

From RHS Wiki
Jump to navigation Jump to search
Line 1: Line 1:
Comand line text processing
+
= Comand line text processing =
 
Examples:
 
Examples:
 
<source lang="bash">
 
<source lang="bash">
Line 9: Line 9:
 
</source>
 
</source>
  
Print from 3rd field till end
+
== Print from 3rd field till end ==
 
<source lang="bash">
 
<source lang="bash">
 
awk '{              \
 
awk '{              \
Line 19: Line 19:
 
== Print with condition ==
 
== Print with condition ==
 
  awk '{if ($3 =="" || $4 == "" || $5 == "") print "Some score for the student",$1,"is missing";'}' student-marks
 
  awk '{if ($3 =="" || $4 == "" || $5 == "") print "Some score for the student",$1,"is missing";'}' student-marks
 +
 +
== Print columns as lines ==
 +
ls -lR | awk '{for(x=1;$x;++x) print $x}'
 +
<nowiki>awk '{for(x=1;$x;x++)print $x}'
 +
          ___ __ ___
 +
          |  |  |
 +
          |  |  |-----> increment x by 1 at the end of each loop.
 +
          |  |--------> run the loop as long as there is a field number x
 +
          |------------> initialize x to 1</nowiki>

Revision as of 17:09, 7 January 2018

Comand line text processing

Examples:

awk -F, '{print NR, length($0)}' filename.txt  #print line number and line length
awk '{print FILENAME " " length($0)}' */PRF* | uniq

awk 'BEGIN { FS = "," } ; { print $2 }'  #Specify separator ',' can be done with -F too.
awk -F"," '$2~/^ABC$/' file  #Find in a csv second field = ABC

Print from 3rd field till end

awk '{              \
       for (i = 3; i <= NF; i++) {   \
          printf("%s ", $i);         \
       }                             \
       printf("\n") }'

Print with condition

awk '{if ($3 =="" || $4 == "" || $5 == "") print "Some score for the student",$1,"is missing";'}' student-marks

Print columns as lines

ls -lR | awk '{for(x=1;$x;++x) print $x}'
awk '{for(x=1;$x;x++)print $x}' 
          ___ __ ___
           |   |  |
           |   |  |-----> increment x by 1 at the end of each loop.
           |   |--------> run the loop as long as there is a field number x
           |------------> initialize x to 1