• ベストアンサー

1フィールド目が同じ行を削除

1フィールド目が同じな場合、2回目に出てくる行を 削除する方法はありますか? list.1の中身 akai akai@ドメイン.com ishida ishida@ドメイン.com ishida info@ドメイン.com info master@ドメイン.com info01 web@ドメイン.com awk '{if(!/$1==$1/){print}}' 今は上記のように1フィールド目が同じな行は表示しない。 としているつもりなのですが、全て表示されてしまいます。 list.1の中身を以下のように1フィールド目だけユニークな ファイルにしたいのです。 akai akai@ドメイン.com ishida ishida@ドメイン.com info master@ドメイン.com info01 web@ドメイン.com どうしたらよいでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

こんにちは  質問者さんのプログラムを理解しようと試みましたが難しくて判りませんでした。  下記は、BEGIN節で前の行を記憶する変数を初期化しておき、ループ節で前のレコードの$1(=変数 a)と現在の行の$1が違うなら(=ユニーク)印刷し、変数 a を更新するというアルゴリズムで考えてみました。  検証していませんが、ご参考まで。 awk 'BEGIN{a=""}{if(a!=$1) print;a=$1}'  なお、ファイル全体に渡って同じものが何度も出てくるようだと処理前に sort する必要があると思うのですが..

r-linux
質問者

お礼

すごい!!そのままこのコマンドにリダイレクトかけたら ユニーク行だけ抽出されました!! ありがとうございます。

関連するQ&A