Awk is an excellent filter and report writer. Many UNIX utilities generates rows and columns of information. AWK is an excellent tool for processing these rows and columns, and is easier to use AWK than most conventional programming languages. AWK also has string manipulation functions, so it can search for particular strings and modify the output. AWK also has associative arrays, which are incredible useful, and is a feature most computing languages lack. Associative arrays can make a complex problem a trivial exercise.
I've frequently used awk with a variety UNIX commands to makelife easier for me, here are some one-liners that may prove helpfull.
Print column1, column5 and column7 of a data file or output of any columns list
awk '{print $1, $5, $7}' data_file
cat file_name |awk '{print $1 $5 $7}'
ls -al |awk '{print $1, $5, $7}' -- Prints file_permissions,size and date
List all files names whose file size greater than zero.
ls -al |awk '$5 > 0 {print $9}'
List all files whose file size equal to 512bytes.
ls -al |awk '$5 == 0 {print $9}'
print all lines
awk '{print }' file_name
awk '{print 0}' file_name
Number of lines in a file
awk ' END {print NR}' file_name
Number of columns in each row of a file
awk '{print NF}' file_name
Sort the output of file and eliminate duplicate rows
awk '{print $1, $5, $7}' |sort -u
List all file names whose file size is greater than 512bytes and owner is -oracle-
ls -al |awk '$3 == "oracle" && $5 > 512 {print $9}'
List all file names whose owner could be either -oracle- or -root-
ls -al |awk '$3 == "oracle" || $3 == "root" {print $9}'
list all the files whose owner is not -oracle
ls -al |awk '$3 != "oracle" {print $9}'
List all lines which has at least one or more characters
awk 'NF > 0 {print }' file_name
List all lines longer that 50 characters
awk 'length($0) > 50 {print }' file_name
List first two columns
awk '{print $1, $2}' file_name
Swap first two columns of a file and print
awk '{temp = $1; $1 = $2; $2 = temp; print }' file_name
Replace first column as -ORACLE- in a data file
awk '{$1 = "ORACLE"; print }' data_file
Remove first column values in a data file
awk '{$1 =""; print }' data_file
Calculate total size of a directory in Mb
ls -al |awk '{total +=$5};END {print "Total size: " total/1024/1024 " Mb"}'
Calculate total size of a directory including sub directories in Mb
ls -lR |awk '{total +=$5};END {print "Total size: " total/1024/1024 " Mb"}'
Find largest file in a directory including sub directories
ls -lR |awk '{print $5 "\t" $9}' |sort -n |tail -1
Monday, July 20, 2009
awk notes
Labels:
Tips n Tricks,
UNIX
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment