質問するログイン新規登録

回答編集履歴

3

回答追加

2017/02/24 07:09

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -13,6 +13,9 @@
13
13
  wawa,zzz1
14
14
  bac,vvv1
15
15
  wawa,www1
16
+ ```
17
+
18
+ ```
16
19
  $ 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];}}'
17
20
  aaa,vvv1
18
21
  wawa,www1
@@ -24,6 +27,21 @@
24
27
  aaa:2
25
28
  ```
26
29
 
30
+ ```
31
+ $ 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];}}'
32
+ aaa,vvv1
33
+ wawa,www1
34
+ bbb,xxx1
35
+ aaa,yyy1
36
+ wawa,zzz1
37
+
38
+ duplicate column 2
39
+ vvv1:2
40
+ www1:2
41
+ ```
42
+
43
+ ----
44
+
27
45
  単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
28
46
  awkではなく`sort` `uniq`で可能です。
29
47
 

2

回答追加:awkでの処理を追加(入力ファイルの形式は想像で追加しています)

2017/02/24 07:09

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,6 +1,29 @@
1
1
  質問からはcsvがどう関係するのかわからないです。
2
2
  **質問へのコメントを記載しました。
3
3
 
4
+ awk でやるならこんな感じです。
5
+ sample.txtの1カラム目の値で重複判定しています。重複数の出力はENDブロックで行っています。
6
+ `$1`を`$2`にすると2カラム目の値で重複判定します。
7
+ ```awk
8
+ $ cat sample.txt
9
+ aaa,vvv1
10
+ wawa,www1
11
+ bbb,xxx1
12
+ aaa,yyy1
13
+ wawa,zzz1
14
+ bac,vvv1
15
+ wawa,www1
16
+ $ 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];}}'
17
+ aaa,vvv1
18
+ wawa,www1
19
+ bbb,xxx1
20
+ bac,vvv1
21
+
22
+ duplicate column 1
23
+ wawa:3
24
+ aaa:2
25
+ ```
26
+
4
27
  単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
5
28
  awkではなく`sort` `uniq`で可能です。
6
29
 

1

回答編集:コードブロックを分割

2017/02/24 07:04

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,9 +1,10 @@
1
1
  質問からはcsvがどう関係するのかわからないです。
2
2
  **質問へのコメントを記載しました。
3
3
 
4
- 単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
4
+ 単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
5
+ awkではなく`sort` `uniq`で可能です。
5
6
 
6
- ```
7
+ ```bash
7
8
  $ cat sample.txt
8
9
  aaa
9
10
  wawa
@@ -12,13 +13,19 @@
12
13
  wawa
13
14
  bac
14
15
  wawa
16
+ ```
17
+
15
- $ # 重複を排除したのもの表示
18
+ # 重複を排除したのもの表示
19
+ ```bash
16
20
  $ sort sample.txt | uniq
17
21
  aaa
18
22
  bac
19
23
  bbb
20
24
  wawa
25
+ ```
26
+
21
- $ # 重複行のカウントを表示
27
+ # 重複行のカウントを表示
28
+ ```bash
22
29
  $ sort sample.txt | uniq -d -c
23
30
  2 aaa
24
31
  3 wawa