質問編集履歴

3 データの追加

watergames-_-

watergames-_- score 8

2016/07/30 19:57  投稿

ばらばらな名前が付いたファイルのデータにファイルの通しIDを付与してまとめたい。
__一部修正しました。行と列の記載の誤記を修正し、データの追加をしました。__
###前提・実現したいこと
100個のばらばらな名前(A)が付いたファイル(file1)があります。
これらのファイルには10,000行位のデータ(B)があります。
これと別にこの100個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル(file2)があります。
この100個のファイル(A001~100)の1行づつ(B)にID番号(C001~100)を付与して、一つのファイルにまとめたいのですが、
やり方に困っています。
file2の3列目を読んで、そのファイル名を元にファイルAを1行目から読み込み、
file2の1列目に書かれているIDをくっつけていくという作業です。
目的ファイルのイメージとしては下記の様な感じです。
C001 B001
C001 B002
C001 B003
...
C002 B001
C002 B002
C002 B003
C002 B004
C002 B005
...
C100 B001
C100 B002
C100 B003
といった感じです。
###
for loopを使うことでどうにか出来そうな気がするのですが、
上手く処理出来ません。
下記を試しましたが、正直後半は自分でも何をやっているのか分かっていない状態です。アドバイス頂ければ幸いです。
他の方法として、上記のfile2(1oo個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル)をもとに、ファイル名を先に換えてしまう方が簡単かも知れませんので、そのやり方でも結構です。
宜しくお願いします。
###試したソースコード
```sh
for f in `awk '{print $3}' file2` ; do
while read line; do
 for i in `awk '{print $1}' file2`; do
   echo "$i $line";
    done <"$f";
     done > file3;
      done
```
###ファイルの中身
ご指摘頂いたので、ファイルの実際の中身を一部載せます。
file2はこんなファイルです。3列目がファイル名です。
```
ID_001 6d822383-e59b-41a6-8680-6bc3f4d1e862   480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt   4804a20f7c4979dfbc4a25039163b7d6   538584   submitted
ID_002 bff3f31e-ee05-448d-af36-1ab183ba2ff4   fcd43085-7338-43fe-bc25-9d87b04e227f.txt   29096eca2f55808fa19cf849107e8f8e   541634   submitted
ID_003 c640cec0-1656-4ca2-92a0-afca1cf3f86c   e38e0ced-093c-44e9-9f3b-7cdd0e6b912e.txt   75a590b047e61327b56b32d88175cdce   549556   submitted
ID_004 8577ad66-1a2d-41df-99c8-ba6b4a5399ac   2e33a2c5-2196-49c4-866a-34b12d984c15.txt   8235f4a52239fe40439028f713e515c0   508395   submitted
ID_005 b826b9fc-3287-41cc-8e29-72666d2fa4f8   939eeb3c-9c0b-431f-8020-7165ee19f068.txt   35001fba081a7a8b9bba35f7a92be9b9   506780   submitted
ID_006 d1b58025-d1cc-46ef-b9cb-6f0315a5620d   e5214aa1-432a-4a47-886c-3ded1616255b.txt   905ca9f1688037beb3b77fce133a009c   524393   submitted
ID_007 6543a250-d902-4612-b64e-18404944ca3d   3828d55b-81ae-42b2-8f5e-d1dcd87e576a.txt   b0ea16a0c6cf2628f77acfd182e71195   534881   submitted
ID_008 f68912b3-1117-4793-a492-2804c7c903de   8a799dfa-c1b5-4b13-9c91-6cbfe2abbc9f.txt   3221205f01a00db20d713d3c16cc8d47   543383   submitted
ID_009 ef3a8b0a-0ce7-4d26-98cc-7e78c21db36b   09a677f2-d81d-4c3f-adf9-f8594e064e44.txt   dac19654887b2cfb081f3c5f82c8f3fa   483745   submitted
ID_010 6a8e84dc-306b-4752-95d7-d653fe91f3a3   f748bf78-4dc1-47ad-8611-8186479d3e4b.txt   b3d8f563268ed14daf59d9598b169d69   525039   submitted
ID_011 4403f1cf-51f6-45bb-8eea-2a4ee08a803c   2eaa996b-267f-4c9c-a58e-d1759c27c46c.txt   b18798c0786f15af3a0734dadae8cc19   525766   submitted
```
file1は例えば480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt
といったファイル名で中身は下記の通りです。
```
0.0679637658767
0.00471509417358
2.7638655666
0.0
4.21007764058
18.1976585455
0.0
0.141924334625
76.4268070169
0.140819865095
0.0
0.0
0.0
28.6577220146
0.0338151883479
1.77092901396
8.68206352022
0.0
0.0
6.47409128452
0.0
```  
 
最終的に欲しいのはこんな感じのファイルです。  
```  
ID_001 0.0679637658767  
ID_001 0.00471509417358  
ID_001 2.7638655666  
ID_001 0.0  
ID_001 4.21007764058  
ID_001 18.1976585455  
ID_001 0.0  
...  
ID_002 1.77092901396  
ID_002 8.68206352022  
ID_002 0.0  
ID_002 0.0  
 
...  
```
  • bash

    1436 questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • シェル

    504 questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

2 __一部修正しました。行と列の記載の誤記を修正し、データの追加をしました。__

watergames-_-

watergames-_- score 8

2016/07/30 19:54  投稿

ばらばらな名前が付いたファイルのデータにファイルの通しIDを付与してまとめたい。
__一部修正しました。行と列の記載の誤記を修正し、データの追加をしました。__  
 
###前提・実現したいこと
100個のばらばらな名前(A)が付いたファイル(file1)があります。
これらのファイルには10,000行位のデータ(B)があります。
これと別にこの100個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル(file2)があります。
この100個のファイル(A001~100)の1行づつ(B)にID番号(C001~100)を付与して、一つのファイルにまとめたいのですが、
やり方に困っています。
file2の3列目を読んで、そのファイル名を元にファイルAを1行目から読み込み、
file2の1列目に書かれているIDをくっつけていくという作業です。
目的ファイルのイメージとしては下記の様な感じです。
C001 B001
C001 B002
C001 B003
...
C002 B001
C002 B002
C002 B003
C002 B004
C002 B005
...
C100 B001
C100 B002
C100 B003
といった感じです。
###
for loopを使うことでどうにか出来そうな気がするのですが、
上手く処理出来ません。
下記を試しましたが、正直後半は自分でも何をやっているのか分かっていない状態です。アドバイス頂ければ幸いです。
他の方法として、上記のfile2(1oo個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル)をもとに、ファイル名を先に換えてしまう方が簡単かも知れませんので、そのやり方でも結構です。
宜しくお願いします。
###試したソースコード
```sh
for f in `awk '{print $3}' file2` ; do
while read line; do
 for i in `awk '{print $1}' file2`; do
   echo "$i $line";
    done <"$f";
     done > file3;
      done
```
###ファイルの中身
ご指摘頂いたので、ファイルの実際の中身を一部載せます。
file2はこんなファイルです。3列目がファイル名です。
```
ID_001 6d822383-e59b-41a6-8680-6bc3f4d1e862   480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt   4804a20f7c4979dfbc4a25039163b7d6   538584   submitted
ID_002 bff3f31e-ee05-448d-af36-1ab183ba2ff4   fcd43085-7338-43fe-bc25-9d87b04e227f.txt   29096eca2f55808fa19cf849107e8f8e   541634   submitted
ID_003 c640cec0-1656-4ca2-92a0-afca1cf3f86c   e38e0ced-093c-44e9-9f3b-7cdd0e6b912e.txt   75a590b047e61327b56b32d88175cdce   549556   submitted
ID_004 8577ad66-1a2d-41df-99c8-ba6b4a5399ac   2e33a2c5-2196-49c4-866a-34b12d984c15.txt   8235f4a52239fe40439028f713e515c0   508395   submitted
ID_005 b826b9fc-3287-41cc-8e29-72666d2fa4f8   939eeb3c-9c0b-431f-8020-7165ee19f068.txt   35001fba081a7a8b9bba35f7a92be9b9   506780   submitted
ID_006 d1b58025-d1cc-46ef-b9cb-6f0315a5620d   e5214aa1-432a-4a47-886c-3ded1616255b.txt   905ca9f1688037beb3b77fce133a009c   524393   submitted
ID_007 6543a250-d902-4612-b64e-18404944ca3d   3828d55b-81ae-42b2-8f5e-d1dcd87e576a.txt   b0ea16a0c6cf2628f77acfd182e71195   534881   submitted
ID_008 f68912b3-1117-4793-a492-2804c7c903de   8a799dfa-c1b5-4b13-9c91-6cbfe2abbc9f.txt   3221205f01a00db20d713d3c16cc8d47   543383   submitted
ID_009 ef3a8b0a-0ce7-4d26-98cc-7e78c21db36b   09a677f2-d81d-4c3f-adf9-f8594e064e44.txt   dac19654887b2cfb081f3c5f82c8f3fa   483745   submitted
ID_010 6a8e84dc-306b-4752-95d7-d653fe91f3a3   f748bf78-4dc1-47ad-8611-8186479d3e4b.txt   b3d8f563268ed14daf59d9598b169d69   525039   submitted
ID_011 4403f1cf-51f6-45bb-8eea-2a4ee08a803c   2eaa996b-267f-4c9c-a58e-d1759c27c46c.txt   b18798c0786f15af3a0734dadae8cc19   525766   submitted
```
file1は例えば480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt
といったファイル名で中身は下記の通りです。
```
0.0679637658767
0.00471509417358
2.7638655666
0.0
4.21007764058
18.1976585455
0.0
0.141924334625
76.4268070169
0.140819865095
0.0
0.0
0.0
28.6577220146
0.0338151883479
1.77092901396
8.68206352022
0.0
0.0
6.47409128452
0.0
```
  • bash

    1436 questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • シェル

    504 questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

1 __一部修正しました。行と列の記載の誤記を修正し、データの追加をしました。__

watergames-_-

watergames-_- score 8

2016/07/30 19:53  投稿

ばらばらな名前が付いたファイルのデータにファイルの通しIDを付与してまとめたい。
###前提・実現したいこと
100個のばらばらな名前(A)が付いたファイル(file1)があります。
これらのファイルには10,000行位のデータ(B)があります。
これと別にこの100個のファイル名(A)が3行目に、ID番号(C)が1行目に書かれたファイル(file2)があります。
これと別にこの100個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル(file2)があります。
この100個のファイル(A001~100)の1行づつ(B)にID番号(C001~100)を付与して、一つのファイルにまとめたいのですが、
やり方に困っています。
file2の3行目を読んで、そのファイル名を元にファイルAを1行目から読み込み、
file2の1行目に書かれているIDをくっつけていくという作業です。
file2の3列目を読んで、そのファイル名を元にファイルAを1行目から読み込み、
file2の1列目に書かれているIDをくっつけていくという作業です。
目的ファイルのイメージとしては下記の様な感じです。
C001 B001
C001 B002
C001 B003
...
C002 B001
C002 B002
C002 B003
C002 B004
C002 B005
...
C100 B001
C100 B002
C100 B003
といった感じです。
###
for loopを使うことでどうにか出来そうな気がするのですが、
上手く処理出来ません。
下記を試しましたが、正直後半は自分でも何をやっているのか分かっていない状態です。アドバイス頂ければ幸いです。
他の方法として、上記のfile2(1oo個のファイル名(A)が3行目に、ID番号(C)が1行目に書かれたファイル)をもとに、ファイル名を先に換えてしまう方が簡単かも知れませんので、そのやり方でも結構です。
他の方法として、上記のfile2(1oo個のファイル名(A)が3列目に、ID番号(C)が1列目に書かれたファイル)をもとに、ファイル名を先に換えてしまう方が簡単かも知れませんので、そのやり方でも結構です。
宜しくお願いします。
###試したソースコード
```sh
for f in `awk '{print $3}' file2` ; do
while read line; do
 for i in `awk '{print $1}' file2`; do
   echo "$i $line";
    done <"$f";
     done > file3;
      done
```  
 
###ファイルの中身  
ご指摘頂いたので、ファイルの実際の中身を一部載せます。  
file2はこんなファイルです。3列目がファイル名です。  
```  
ID_001 6d822383-e59b-41a6-8680-6bc3f4d1e862   480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt   4804a20f7c4979dfbc4a25039163b7d6   538584   submitted  
ID_002 bff3f31e-ee05-448d-af36-1ab183ba2ff4   fcd43085-7338-43fe-bc25-9d87b04e227f.txt   29096eca2f55808fa19cf849107e8f8e   541634   submitted  
ID_003 c640cec0-1656-4ca2-92a0-afca1cf3f86c   e38e0ced-093c-44e9-9f3b-7cdd0e6b912e.txt   75a590b047e61327b56b32d88175cdce   549556   submitted  
ID_004 8577ad66-1a2d-41df-99c8-ba6b4a5399ac   2e33a2c5-2196-49c4-866a-34b12d984c15.txt   8235f4a52239fe40439028f713e515c0   508395   submitted  
ID_005 b826b9fc-3287-41cc-8e29-72666d2fa4f8   939eeb3c-9c0b-431f-8020-7165ee19f068.txt   35001fba081a7a8b9bba35f7a92be9b9   506780   submitted  
ID_006 d1b58025-d1cc-46ef-b9cb-6f0315a5620d   e5214aa1-432a-4a47-886c-3ded1616255b.txt   905ca9f1688037beb3b77fce133a009c   524393   submitted  
ID_007 6543a250-d902-4612-b64e-18404944ca3d   3828d55b-81ae-42b2-8f5e-d1dcd87e576a.txt   b0ea16a0c6cf2628f77acfd182e71195   534881   submitted  
ID_008 f68912b3-1117-4793-a492-2804c7c903de   8a799dfa-c1b5-4b13-9c91-6cbfe2abbc9f.txt   3221205f01a00db20d713d3c16cc8d47   543383   submitted  
ID_009 ef3a8b0a-0ce7-4d26-98cc-7e78c21db36b   09a677f2-d81d-4c3f-adf9-f8594e064e44.txt   dac19654887b2cfb081f3c5f82c8f3fa   483745   submitted  
ID_010 6a8e84dc-306b-4752-95d7-d653fe91f3a3   f748bf78-4dc1-47ad-8611-8186479d3e4b.txt   b3d8f563268ed14daf59d9598b169d69   525039   submitted  
ID_011 4403f1cf-51f6-45bb-8eea-2a4ee08a803c   2eaa996b-267f-4c9c-a58e-d1759c27c46c.txt   b18798c0786f15af3a0734dadae8cc19   525766   submitted  
```  
 
 
file1は例えば480de2f2-6f01-43e9-bc1b-77b8ec8451f5.txt  
といったファイル名で中身は下記の通りです。  
```  
0.0679637658767  
0.00471509417358  
2.7638655666  
0.0  
4.21007764058  
18.1976585455  
0.0  
0.141924334625  
76.4268070169  
0.140819865095  
0.0  
0.0  
0.0  
28.6577220146  
0.0338151883479  
1.77092901396  
8.68206352022  
0.0  
0.0  
6.47409128452  
0.0  
```
  • bash

    1436 questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • シェル

    504 questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る