コマンドを使用していくつかのソートを実行していますuniq -d
。私が望む結果を得られませんでした。
私のファイルは次のとおりです。
>TCONS_00000066 174 206 33
>TCONS_00000066 210 281 72
>TCONS_00000066 227 316 90
>TCONS_00000066 285 338 54
>TCONS_00000066 335 373 39
>TCONS_00000066 342 377 36
>TCONS_00006042 493 552 60
>TCONS_00006042 562 606 45
>TCONS_00006042 630 686 57
>TCONS_00006042 622 699 78
>TCONS_00006042 614 724 111
>TCONS_00006042 696 767 72
列1の重複エントリを削除したいです。
出力:
>TCONS_00000066
>TCONS_00006042
しかし、毎回空のファイルが表示されます。
uniq -d ファイル > 新しいファイル
別の方法がありますか?
答え1
Uniqは行の残りの部分をソートしたり削除したりしません。uniq -d
重複した行のみが表示されます。これは、各行を1回表示することとは異なります(つまり、-d
2回連続して表示する必要があります)。
まず、興味深い列を切り取り、並べ替えて一意の要素を見つけます。
cut -d ' ' -f 1 your_file | sort | uniq
答え2
awkを使用できます。
awk '!x[$1]++ { print $1 }' file
答え3
uniq -d
入力に重複行のみをリストします。ファイルに重複行(完全とみなされる)が含まれていないため、何も出力されません。
目的の結果を得るには、最初の列を抽出してフィルタリングする必要があります。
cut -d\ -f1 file | uniq
ファイルがソートされているとします(uniq
隣接する行のみをフィルタリングします)。
cut -d\ -f1 file | sort -u
awk
または指摘したようにすることができますタレジン、最初の列だけを出力するいくつかのバリエーションがあります。
awk '!x[$1]++ { print $1 }' file