2016-10-20 14 views
1

大きなタブ区切りのテキストファイルがあります。同じ値を持つすべての行を削除し、少なくとも1つの異なる値を持つ行を抽出したいと思います。同じ値を持つ行を削除する

FILE.TXT

Gen1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
Gen4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 

OUTPUT.TXT残念ながら

Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 

は、私は、次のコマンドを使用して、期待される出力を得ることができませんでした。

perl -ne 'print if ! $a{$_}++' 

それとも sort -uまたはuniq最初の列は別の名前を持っているので、彼らは動作しません。端(-k2)までの第2のフィールドから選択されたキーを使用して

+0

それらの行のすべての値が同じ値を持っているので、あなたがGen1,2,4,5行が出力の一部ではないことを明確にすることができますか?あなたの予想される出力は、あなたが受け入れた答えと一致しません... – Sundeep

+0

"同じ値を持つ行を削除する"という質問が重複として閉じられたのは面白いです。 :D – anishsane

+0

重複していないときも(少なくとも1つのものとしてマークされているものではない)誰かが質問を再開できるか? – Sundeep

答えて

2

sort:タブ

  • -uが選択したキー

    に基づいて一意のエントリを取得するように

    sort -t '\t' -uk2 file.txt 
    
    • -t '\t'フィールド区切り文字を設定します

    例:

    % sort -uk2 file.txt 
    Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
    Gen1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
    Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
    
  • 関連する問題