Linux awk command
2008-09-15
251 words
2 mins read
Have you ever had a column-oriented text file, similar to a spreadsheet, but the columns weren't in the order you wanted? For instance, suppose you
had the following information in a file named "checkbook.orig":
COST DATE BALANCE
10.00 040198 1000.00
20.00 040298 980.00
30.00 040298 950.00
The information is good, but you'd prefer to have the DATE column first, followed by the COST information in the second column, and the BALANCE column third.
Using awk, you can easily rearrange the columns. The following command reads the data from the file named "checkbook.orig", and writes the data to a file named "checkbook.new":
awk '{print $2, $1, $3}' checkbook.orig > checkbook.new
This brief awk command reads each line of the original file, and for each line it reads, it writes an output line to the "new" file. As it writes each record to the new file, it rearranges the order of the columns, so that the columns now appear in the desired order!
If you prefer a little more control of the printed output, awk also has a "printf" function that's very similar to printf in the "C" programming language. Here's the same example, with a tab character in-between each column of the output:
awk '{printf ("%s\t%s\t%s\n", $2, $1, $3) }' checkbook.orig > checkbook.new
The awk command is a powerful programming utility that takes care of things like opening files and reading each line automatically, so all you have to do is tell awk how to process each line as it goes by.
Authored By Amit Agarwal
Amit Agarwal, Linux and Photography are my hobbies.Creative Commons Attribution 4.0 International License.