So I was trying to retrieve some information out of a log, and just for funsies, I thought I'd write it down here, so I remember what I did.
In short:
So I was trying to get a list of UUIDs of messages that failed to be parsed.
The serverlog I had contained for example the following:
Error during processing of message 8748 (225abd00-a806-455e-b3ef-a991c163fd41).
grep "Error during processing of" server.log | awk '{print $7}' | sed 's/(// ; s/)// ; s/\.//' | sort | uniq
Short explanation:
- grep - only pick the lines containing that string
- awk - print the 7th column with a standard delimiter of white space (" ")
- sed - replace opening brackets ("("), closing brackets (")") and periods (".") from the output
- sort - sort all alphabetically
- uniq - make sure there are no duplicates
The result should be a list of UUIDs.
Footnote 1: the sort is essential, as uniq only works on adjacent lines
Footnote 2: yes, I know I can grep inside of an awk commando, but I am more familiar with grep and this is more fun.
Footnote 3: I've tested this on my MacBook. Linux might in some cases have different syntax.