Thursday, 22 October 2026

Using grep, awk, sed, sort, and uniq in combination

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.

No comments:

Post a Comment