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

回答編集履歴

2

質問の追加に伴う追記

2019/11/22 14:43

投稿

KojiDoi
KojiDoi

スコア13727

answer CHANGED
@@ -11,4 +11,31 @@
11
11
  質問の追加に伴う追記
12
12
 
13
13
  単に各項の数字を削除したいだけなのにわざわざ行列の入れ替えを行なうとは、あまりに無駄すぎると思います。
14
- sedを使うなら、`s/[0-9]*,/,/g; s/[0-9]*$//;`で済みます。
14
+ sedを使うなら、`s/[0-9]*,/,/g; s/[0-9]*$//;`で済みます。
15
+
16
+ 追加事項に対応してみたスクリプト。さすがにワンライナーは辛くなってきたのでスクリプトファイルにしてみます。
17
+ ```
18
+ $ cat coluniq.pl
19
+ while(<>){
20
+ chomp;
21
+ my %d;
22
+ my @F=split(/,/, $_);
23
+ my($from, $to) = (4, $#F);
24
+ foreach my $x (@F[$from..$to]){
25
+ $x=~s/[0-9]+$//;
26
+ $d{$x}=0;
27
+ }
28
+ print join(",", @F[0..($from-1)], keys %d);
29
+ }
30
+
31
+ $ cat in.csv
32
+ 1,1,1,1,kingyo,panda,pig,pig
33
+ 1,1,1,1,neko,inu,sakana,penguin
34
+ 1,1,1,1,sea,see,sea,mountain
35
+ 1,1,1,1,taro,taro,taro1,taro2
36
+
37
+ $ perl ~/work/coluniq.pl in.csv
38
+ 1,1,1,1,panda,kingyo,pig
39
+ 1,1,1,1,inu,penguin,sakana,neko
40
+ 1,1,1,1,see,mountain,sea
41
+ ```

1

追記

2019/11/22 14:43

投稿

KojiDoi
KojiDoi

スコア13727

answer CHANGED
@@ -6,4 +6,9 @@
6
6
  というわけで、
7
7
  ```
8
8
  perl -F, -anle 'my %x; print join(",", grep {!$x{$_}++} @F)' file.csv
9
- ```
9
+ ```
10
+
11
+ 質問の追加に伴う追記
12
+
13
+ 単に各項の数字を削除したいだけなのにわざわざ行列の入れ替えを行なうとは、あまりに無駄すぎると思います。
14
+ sedを使うなら、`s/[0-9]*,/,/g; s/[0-9]*$//;`で済みます。