回答編集履歴

3

回答追加

2017/02/24 07:09

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -28,6 +28,12 @@
28
28
 
29
29
  wawa,www1
30
30
 
31
+ ```
32
+
33
+
34
+
35
+ ```
36
+
31
37
  $ 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];}}'
32
38
 
33
39
  aaa,vvv1
@@ -47,6 +53,36 @@
47
53
  aaa:2
48
54
 
49
55
  ```
56
+
57
+
58
+
59
+ ```
60
+
61
+ $ 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];}}'
62
+
63
+ aaa,vvv1
64
+
65
+ wawa,www1
66
+
67
+ bbb,xxx1
68
+
69
+ aaa,yyy1
70
+
71
+ wawa,zzz1
72
+
73
+
74
+
75
+ duplicate column 2
76
+
77
+ vvv1:2
78
+
79
+ www1:2
80
+
81
+ ```
82
+
83
+
84
+
85
+ ----
50
86
 
51
87
 
52
88
 

2

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

2017/02/24 07:09

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,6 +1,52 @@
1
1
  質問からはcsvがどう関係するのかわからないです。
2
2
 
3
3
  **質問へのコメントを記載しました。
4
+
5
+
6
+
7
+ awk でやるならこんな感じです。
8
+
9
+ sample.txtの1カラム目の値で重複判定しています。重複数の出力はENDブロックで行っています。
10
+
11
+ `$1`を`$2`にすると2カラム目の値で重複判定します。
12
+
13
+ ```awk
14
+
15
+ $ cat sample.txt
16
+
17
+ aaa,vvv1
18
+
19
+ wawa,www1
20
+
21
+ bbb,xxx1
22
+
23
+ aaa,yyy1
24
+
25
+ wawa,zzz1
26
+
27
+ bac,vvv1
28
+
29
+ wawa,www1
30
+
31
+ $ 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];}}'
32
+
33
+ aaa,vvv1
34
+
35
+ wawa,www1
36
+
37
+ bbb,xxx1
38
+
39
+ bac,vvv1
40
+
41
+
42
+
43
+ duplicate column 1
44
+
45
+ wawa:3
46
+
47
+ aaa:2
48
+
49
+ ```
4
50
 
5
51
 
6
52
 

1

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

2017/02/24 07:04

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -4,11 +4,13 @@
4
4
 
5
5
 
6
6
 
7
- 単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
7
+ 単に以下のようなtxtファイルから重複行を排除、重複した行の数を表示するなら
8
+
9
+ awkではなく`sort` `uniq`で可能です。
8
10
 
9
11
 
10
12
 
11
- ```
13
+ ```bash
12
14
 
13
15
  $ cat sample.txt
14
16
 
@@ -26,7 +28,13 @@
26
28
 
27
29
  wawa
28
30
 
31
+ ```
32
+
33
+
34
+
29
- $ # 重複を排除したのもの表示
35
+ # 重複を排除したのもの表示
36
+
37
+ ```bash
30
38
 
31
39
  $ sort sample.txt | uniq
32
40
 
@@ -38,7 +46,13 @@
38
46
 
39
47
  wawa
40
48
 
49
+ ```
50
+
51
+
52
+
41
- $ # 重複行のカウントを表示
53
+ # 重複行のカウントを表示
54
+
55
+ ```bash
42
56
 
43
57
  $ sort sample.txt | uniq -d -c
44
58