I’ve been spending more time lately increasing my knowledge of unix commands in order to make my daily log parsings, etc easier. I’ve found that I have a lot of commands that I use out of habit and they get things done, but not necessarily in the best way. So I thought I’d write about a few of my favorite new commands.
watch
The watch
command is great for monitoring something for a change, or just to keep an open status.
You can do something simple just to keep a terminal session active
watch -n 60 date
or something more complex like generating a small report from log output
watch -n 30 'echo "SUCCESS"; grep -ic "success" results.log; echo "SKIPPED"; grep -icv "success" results.log; echo "TOTAL"; wc -l results.log;
this will generate a nice little report like:
SUCCESS
13886
SKIPPED
114
TOTAL
14000 results.log
the -n [sec]
argument defines how frequently to update the data. At that interval the screen will refresh and the updated info displayed.
awk
I have several awk one liners that I use almost daily
- Yank a specific record from an LDIF
gawk 'BEGIN {IGNORECASE=1; RS="\n\n"} /cn: Brian Kohles/ {print ; print "";} example.ldif
- Count occurences column 1 ($1) in a file
awk '{count[$1]++} END {for(j in count) print j,"\t" count[j]}'
- Split a file into multiple 1000 line files
awk 'NR%1000 == 1 {file = "outputfile" i++} {print > file}' file.txt