How can I print only those lines that appear exactly once in a file? E.g., given this file:
mountain
forest
mountain
eagle
The output would be this, because the line mountain
appears twice:
forest
eagle
Use sort
and uniq
:
sort inputfile | uniq -u
The -u
option would cause uniq
to print only unique lines. Quoting from man uniq
:
-u, --unique
only print unique lines
For your input, it'd produce:
eagle
forest
Obs: Remember to sort
before uniq -u
because uniq
operates on adjacent lines. So what uniq -u
actually does is to print lines that don't have identical neighbor lines, but that doesn't mean they are really unique. When you sort
, all the identical lines get grouped together and only the lines that are really unique in the file will remain after uniq -u
.