2

タブ区切りのファイルがあり、最初の 3 列のみが同一である行を削除 (1 つのコピーを保持) したいと考えています。私は awk や uniq などの unix を使用してこれを行うことを好みます。

入力ファイル:

Supercontig_1.1 241783  286397  5677    52
Supercontig_1.1 241783  286397  5678    53
Supercontig_1.1 241783  286397  5679    53
Supercontig_1.2 10500  25700  3000    57
Supercontig_1.2 10500  25700  3001    59
Supercontig_1.2 10500  25700  3002    59
Supercontig_1.3 2000  7000  5686    60
Supercontig_1.3 2000  7000  5687    60

出力:

 Supercontig_1.1 241783  286397  5677    52
 Supercontig_1.2 10500  25700  3000    57
 Supercontig_1.3 2000  7000  5686    60
4

2 に答える 2

5

を使用した片道awk

awk '!array[$1,$2,$3]++' file.txt

結果:

Supercontig_1.1 241783 286397 5677 52
Supercontig_1.2 10500 25700 3000 57
Supercontig_1.3 2000 7000 5686 60
于 2012-10-18T09:07:21.100 に答える
2

このワンライナーはトリックを行います:

awk '!a[$1$2$3]++' file

テスト

kent$  echo "Supercontig_1.1 241783  286397  5677    52
dquote> Supercontig_1.1 241783  286397  5678    53
dquote> Supercontig_1.1 241783  286397  5679    53
dquote> Supercontig_1.2 10500  25700  3000    57
dquote> Supercontig_1.2 10500  25700  3001    59
dquote> Supercontig_1.2 10500  25700  3002    59
dquote> Supercontig_1.3 2000  7000  5686    60
dquote> Supercontig_1.3 2000  7000  5687    60
dquote> "|awk '!a[$1$2$3]++'
Supercontig_1.1 241783  286397  5677    52
Supercontig_1.2 10500  25700  3000    57
Supercontig_1.3 2000  7000  5686    60
于 2012-10-18T09:07:39.127 に答える