質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

3回答

11720閲覧

awkで重複行の削除及びカウントを実施したい

sasakisasa9

総合スコア6

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

1グッド

1クリップ

投稿2017/02/24 04:42

awkコマンドを用い、csvの中から重複した行を除外し、重複した件数が何件存在しているか確認できるコマンドはありますでしょうか?


sample.csv
以下の項目が存在
aaa
aaa
bbb
bac

上記の項目の中より、重複項目を除外し、且つ重複していた数を出力したいです

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2017/02/24 04:48

sample.csv の具体例を10行ほどまた、結果としてどういう結果が欲しいのかも具体歴に記載すると回答が得られやすいと思います。
guest

回答3

0

順番そのままに重複削除

awk

1awk '{if($0 in hs){c++}else{hs[$0];print $0}}END{print c >"/dev/stderr"}' sample.csv >hoge.csv

投稿2017/02/24 09:15

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じでどうですか?

AWK

1!lines[$0]++ { 2 print $0; 3} 4 5END { 6 print "---"; 7 for (i in lines) if (lines[i] > 1) { 8 print lines[i] " : " i; 9 } 10}

出力

aaa bbb bac --- 2 : aaa

投稿2017/02/24 06:59

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2017/02/24 07:05

出力の説明をします。 --- 以前は、重複行(連続しているしていないに関わらず文中で複数現れる行)の二回目以降を削除したものです。 --- 以降は、「重複した回数 : 行の内容」です。
guest

0

質問からはcsvがどう関係するのかわからないです。
**質問へのコメントを記載しました。

awk でやるならこんな感じです。
sample.txtの1カラム目の値で重複判定しています。重複数の出力はENDブロックで行っています。
$1$2にすると2カラム目の値で重複判定します。

awk

1$ cat sample.txt 2aaa,vvv1 3wawa,www1 4bbb,xxx1 5aaa,yyy1 6wawa,zzz1 7bac,vvv1 8wawa,www1
$ cat sample.txt |awk -F, '!colname[$1]++{print $0}END{print "\nduplicate column 1";for (i in colname){if (colname[i]>1) print i":"colname[i];}}' aaa,vvv1 wawa,www1 bbb,xxx1 bac,vvv1 duplicate column 1 wawa:3 aaa:2
$ cat sample.txt |awk -F, '!colname[$2]++{print $0}END{print "\nduplicate column 2";for (i in colname){if (colname[i]>1) print i":"colname[i];}}' aaa,vvv1 wawa,www1 bbb,xxx1 aaa,yyy1 wawa,zzz1 duplicate column 2 vvv1:2 www1:2

単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
awkではなくsort uniqで可能です。

bash

1$ cat sample.txt 2aaa 3wawa 4bbb 5aaa 6wawa 7bac 8wawa

重複を排除したのもの表示

bash

1$ sort sample.txt | uniq 2aaa 3bac 4bbb 5wawa

重複行のカウントを表示

bash

1$ sort sample.txt | uniq -d -c 2 2 aaa 3 3 wawa

投稿2017/02/24 05:05

編集2017/02/24 07:09
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問