ファイルに1回だけ現れる行だけを印刷するにはどうすればよいですか?たとえば、次のファイルがあるとします。
mountain
forest
mountain
eagle
mountain
という行が2回表示されるため、出力は次のようになります。
forest
eagle
Awkの使用:
awk '{!seen[$0]++};END{for(i in seen) if(seen[i]==1)print i}' file
eagle
forest
sort
とuniq
を使用:
_sort inputfile | uniq -u
_
_-u
_オプションを使用すると、uniq
は一意の行のみを出力します。 _man uniq
_からの引用:
_ -u, --unique
only print unique lines
_
あなたの入力のために、それは生成します:
_eagle
forest
_
Obs: _uniq -u
_の前にsort
を忘れないでください。uniq
は隣接行で動作するためです。したがって、_uniq -u
_が実際に行うことは、同一の隣接線を持たない線を出力することですが、それは実際にそれらが一意であることを意味しません。 sort
を実行すると、すべての同一行がグループ化され、ファイル内で本当に一意の行のみが_uniq -u
_の後に残ります。
あなたはほとんどあなたの質問に答えを持っていました:
sort filename | uniq -u