質問編集履歴
1
自分の解決法+質問の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,4 +20,32 @@
|
|
20
20
|
```
|
21
21
|
のように変換したいです。
|
22
22
|
|
23
|
-
何か解決策はございますでしょうか?
|
23
|
+
何か解決策はございますでしょうか?
|
24
|
+
|
25
|
+
【以降追記】
|
26
|
+
|
27
|
+
解凍していただいた皆様、ありがとうございます。
|
28
|
+
|
29
|
+
追加で各単語の行末についている数字を削除する必要が出てきたので以下のように`datamash transpose`を用いてループの中で一行ずつやりました。
|
30
|
+
$1に元のファイル、$2に書き出し先のファイル名を指定しています。
|
31
|
+
|
32
|
+
```shell
|
33
|
+
while read row; do
|
34
|
+
echo $row |
|
35
|
+
|
36
|
+
sed -e 's/,/\t/g' | # , =>tab
|
37
|
+
datamash transpose | # transpose
|
38
|
+
|
39
|
+
# 行末についている1〜2桁の数字を削除
|
40
|
+
sed -e "s/[0-9]*$//" |
|
41
|
+
sed -e "s/[0-9][0-9]*$//" |
|
42
|
+
|
43
|
+
sort -u | # 重複行削除
|
44
|
+
tr '\n' ',' | # 改行をカンマにして一列へ戻す
|
45
|
+
sed "s/^,//g" >> $2 # 行頭のカンマ削除
|
46
|
+
done < $1
|
47
|
+
```
|
48
|
+
|
49
|
+
こちらのやり方で何かよくない点等ありましたらご意見いただけるとありがたいです。
|
50
|
+
|
51
|
+
P.S. このデータは元データの5カラム目以降を`cut`して作業しています。作業後元のファイルに結合する必要がありますが、`paste`コマンドで結合したところ数カ所で一つのセルに複数の行・列が格納されてしまいました。なので元のデータを切り取って作業するのではなく元のデータのままで`sed`コマンドなどを「〜列目以降のモノに対してだけ」使いたいと思ってます。これに関して何か良い方法はありますか?
|