重複行を削除するUNIX(bash)コマンドを教えてください


UNIX(bash)のuniqコマンド(など)を使って
第一フィールドのみが重複している行を削除して書き出すコマンドを教えてください。
(データーはソート済みでtabで区切られています。)

なるべく具体的なコマンドでご教授お願いいたします。

例)
「abc」「ccd」が重複しているとすると
---------------
aaa 6880 2264
abc 4356 5634
abc 2346 9745
bbc 6784 4945
bbf 6444 8574
ccd 1750 5493
ccd 6093 3453
cee 9346 5444
---------------
 ↓
---------------
aaa 6880 2264
bbc 6784 4945
bbf 6444 8574
cee 9346 5444
---------------

のように「abc」「ccd」の行をすべて
削除して表示したい案配です。

回答の条件
  • 1人2回まで
  • 登録:2007/09/23 19:20:31
  • 終了:2007/09/23 22:01:02

回答(2件)

id:dev_zer0 No.1

dev_zer0回答回数332ベストアンサー獲得回数252007/09/23 20:01:00

ポイント35pt

http://www.linux.or.jp/JM/html/gnumaniak/man1/uniq.1.html

上記のテキストファイルがhoge.txtとすると

uniq -w 3 -u < hoge.txt

で期待した結果になります

"-w 3"は比較するときに先頭3文字しか使わないという意味です

"-u"は一回しか出現しないもののみ出力します

id:urawareds

ありがとうございます

思った通りに処理できました

2007/09/23 21:26:08
id:iww No.2

いわわ回答回数101ベストアンサー獲得回数102007/09/23 20:05:55

ポイント35pt

uniqコマンドにはユニークな行だけ出力するオプション -u と最初の何文字のみを使うオプション -w があります。

比較したいフィールド幅が決まってるなら

uniq -w 3 -u a.txt

で済むと思います。

id:urawareds

ありがとうございます

思った通りに処理できました

2007/09/23 21:26:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません