ソートせずに重複行を削除する方法は?

ソートせずに重複行を削除する方法は?

行をソートせずに重複した行を削除したいと思います。また、先行スペースを無視したいと思います。

猫テスト.txt

 abc 

  def

pqr

      abc        

    xyz

             def 

    efg

その後、出力は次のようになります。

abc

def

pqr

xyz

efg

ベストアンサー1

この試み:

$ awk 'NF && !($1 in a){a[$1];p=$1;print (getline == 0) ? p : p"\n"}' cat
abc

def

pqr

xyz

efg

説明する

  • NF && !($1 in a):空ではなく、値が連想配列にまだ表示されていない行のみを処理しますa
  • a[$1]:値が表示されない場合は連想配列に保存しますa
  • p=$1;print (getline == 0) ? $1 : p"\n":値を変数に保存しますp。ファイルの終わりでない場合は変数pラップを印刷し、ファイルの終わりでない場合はp値のみを印刷します。

おすすめ記事