I’ve always leaned more towards sed than awk, since I’ve always gotten the impression that they have more or less the same capabilities, just with different syntaxes.
But the more command line parsing I do, the more I’ve begun to realize that there are certain things I find easier to do in awk, while some things are easier with sed.
One of these things, that I find awk a better tool for, is getting specific columns of data from structured files (most often, but not limited to, logs).
I have for some time known about
cat somefile | awk '{ print $1 }'
Which will output the first column of every line from somefile. A couple of weeks ago, I needed to fetch two columns from a file (I can’t remember now what the file or task was, I’ll substitute with a poor example instead)
ls -l | awk '{ print $1, $8 }'
This will give you the permissions and names of all directories and files in pwd. One could of course switch places of $1 and $8 (i.e. print $8, $1) to get names first and then the permissions.
Recently I found myself needing to find all the commands executed from a crontab (part of a script, to create another script which was to verify that a migration had gone right, by allowing me to execute those commands whenever I wanted, and not just whenever the crontab specified)
Luckily for me, and this blogpost
, none of those commands were executed with parameters, and since I am too lazy to actually count how many fields there are in a crontab file, I got to use:
crontab -l | grep '^*0-9' | awk '{ print $(NF) }'
Which lists the content of the present users crontab, finds all lines which either begin with a number or an asterisk, and then prints the last column of that line. Magic!
Related posts:
- awk, filtering and counting Suppose that you have a file containing some structured data,...
- Important Dates Notifier I have never been especially good at remembering dates or...
- 2011w42 Perl Progress! This week I wrote my first perl script,...
- Whitespaces in filenames and how to get rid of them Although it has been more than four years since I...
- 2011w46 First of all: this is really disturbing. Commands and flags...
Related posts brought to you by Yet Another Related Posts Plugin.
