質問編集履歴

1

自分の解決法+質問の追記

2019/11/22 04:55

投稿

TaroNoguchi
TaroNoguchi

スコア18

test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,59 @@
43
43
 
44
44
 
45
45
  何か解決策はございますでしょうか?
46
+
47
+
48
+
49
+ 【以降追記】
50
+
51
+
52
+
53
+ 解凍していただいた皆様、ありがとうございます。
54
+
55
+
56
+
57
+ 追加で各単語の行末についている数字を削除する必要が出てきたので以下のように`datamash transpose`を用いてループの中で一行ずつやりました。
58
+
59
+ $1に元のファイル、$2に書き出し先のファイル名を指定しています。
60
+
61
+
62
+
63
+ ```shell
64
+
65
+ while read row; do
66
+
67
+ echo $row |
68
+
69
+
70
+
71
+ sed -e 's/,/\t/g' | # , =>tab
72
+
73
+ datamash transpose | # transpose
74
+
75
+
76
+
77
+ # 行末についている1〜2桁の数字を削除
78
+
79
+ sed -e "s/[0-9]*$//" |
80
+
81
+ sed -e "s/[0-9][0-9]*$//" |
82
+
83
+
84
+
85
+ sort -u | # 重複行削除
86
+
87
+ tr '\n' ',' | # 改行をカンマにして一列へ戻す
88
+
89
+ sed "s/^,//g" >> $2 # 行頭のカンマ削除
90
+
91
+ done < $1
92
+
93
+ ```
94
+
95
+
96
+
97
+ こちらのやり方で何かよくない点等ありましたらご意見いただけるとありがたいです。
98
+
99
+
100
+
101
+ P.S. このデータは元データの5カラム目以降を`cut`して作業しています。作業後元のファイルに結合する必要がありますが、`paste`コマンドで結合したところ数カ所で一つのセルに複数の行・列が格納されてしまいました。なので元のデータを切り取って作業するのではなく元のデータのままで`sed`コマンドなどを「〜列目以降のモノに対してだけ」使いたいと思ってます。これに関して何か良い方法はありますか?