2015-10-16 3 views
0

У меня есть несколько файлов с тем же именем (3pGtoA_freq.txt), но все они расположены в разных каталогах. Каждый файл выглядит следующим образом:Вырезать столбец из нескольких файлов с тем же именем в разных каталогах и вставить в один

pos 5pG>A 
1 0.162421557770395 
2 0.0989643268124281 
3 0.0804131316857248 
4 0.0616563298066399 
5 0.0577551761714493 
6 0.0582450832072617 
7 0.0393129770992366 
8 0.037037037037037 
9 0.0301016419077404 
10 0.0327510917030568 
11 0.0301598837209302 
12 0.0309050772626932 
13 0.0262089331856774 
14 0.0254612546125461 
15 0.0226130653266332 
16 0.0206971677559913 
17 0.0181280059193489 
18 0.0243993993993994 
19 0.0181347150259067 
20 0.0224429727740986 
21 0.0175690211545357 
22 0.0183916336098089 
23 0.0196078431372549 
24 0.0187983781791375 
25 0.0173192771084337 

Я хочу, чтобы сократить столбец 2 из каждого файла и вставить столбец за столбцом в одном файле

Я попытался запустить:

for s in results_Sample_*_hg19/results_MapDamage_Sample_*/results_Sample_*_bwa_LongSeed_sorted_hg19_noPCR/3pGtoA_freq.txt; do awk '{print $2}' $s >> /home/users/istolarek/aDNA/3pGtoA_all; done 

, но это не приклеивая столбцы рядом друг с другом.

Также я хотел назвать каждый столбец «*», который является единственной строкой, которая изменяется в пути.

Любая помощь с этим?

ответ

0

для i в $ (find you_file_dir -name 3pGtoA_freq.txt); do awk '{print $ 2 >> «NewFile»}' $ i; сделано

0

Я хотел бы сделать это путем обработки всех файлов параллельно в AWK:

awk 'BEGIN{printf "pos "; 
      for(i=1;i<ARGC;++i) 
      printf "%-19s",gensub("^results_Sample_","",1,gensub("_hg19.*","",1,ARGV[i])); 
      printf "\n"; 
      while(getline<ARGV[1]){ 
      printf "%-4s%-19s",$1,$2; 
      for(i=2;i<ARGC;++i){ 
       getline<ARGV[i]; 
       printf "%-19s",$2} 
      printf "\n"}}{exit}' \ 
results_Sample_*_hg19/results_MapDamage_Sample_*/results_Sample_*_bwa_LongSeed_sorted_hg19_noPCR/3pGtoA_freq.txt 

Если AWK не gensub (я использую Cygwin), вы можете удалить первые четыре строки (Printf -printf); в этом случае заголовки не будут напечатаны.

Смежные вопросы