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
- The lines can be sorted, if necessary.
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.
Using awk:
awk '{!seen[$0]++};END{for(i in seen) if(seen[i]==1)print i}' file
eagle
forest
