行をソートせずに重複した行を削除したいと思います。また、先行スペースを無視したいと思います。
猫テスト.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
値のみを印刷します。