人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

重複行を削除する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」の行をすべて
削除して表示したい案配です。


●質問者: urawareds
●カテゴリ:インターネット ウェブ制作
✍キーワード:AAA ABC bash BBC CCD
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● dev_zer0
●35ポイント

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

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

uniq -w 3 -u < hoge.txt

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

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

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

◎質問者からの返答

ありがとうございます

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


2 ● いわわ
●35ポイント

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

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

uniq -w 3 -u a.txt

で済むと思います。

◎質問者からの返答

ありがとうございます

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ