-1
$\begingroup$

EDITED

I have list of my samples in first column and corresponding file name for my .vcf files in second column of a file name clin_name.txt like below. For example name of one vcf is LP6008031-DNA_A04_vs_LP6008032-DNA_D03.snp.pass.vcf

OC/AH/120/E/T3  LP6005409-DNA_F01
OC/AH/126/E/T1  LP2000325-DNA_A01
OC/AH/136/E/T3  LP6005409-DNA_E02

This is the link of my file https://www.dropbox.com/s/mvzf47feiqe7x69/clin_name.txt.txt?dl=0

In the second file name pre_post.list I have information of pre or post treatment for each sample like this

pre-treated post-treated
OC/AH/120   OC/AH/065
OC/AH/126   OC/AH/069
OC/AH/136   OC/AH/074
OC/AH/160   OC/AH/084

This is link of this https://www.dropbox.com/s/ikrl1h8yoc0sngx/pre_post.list.xlsx?dl=0

As you suggested I typed

cat pre_post.list | awk '{print $2}' | sed 's@.*/@@'  > post_list.txt
cat pre_post.list | awk '{print $1}' | sed 's@.*/@@'  > pre_list.txt

Then I have

pre-treated
120
126
136
160
182

post-treated
065
069
074
084

in I typed ./test.sh in which I wrote

for item in  $(cat  pre_list.txt | grep -Eo '[0-9]{1,4}');
    do if grep -q $item clin_name.txt ;
    then out=$(grep $item clin_name.txt | awk  '{print $1}');
         cp *$out* /temp/hgig/fi1d18/TRG45/snp/
    else echo post_list $item;  fi;  done;

That returns

cp: cannot stat `*OC/AH/069/S/T3*': No such file or directory
[fi1d18@cyan01 snp]$

Or I run

for item in  $(cat  post_list.txt | grep -Eo '[0-9]{1,4}');
    do if grep -q $item clin_name.txt ;
    then out=$(grep $item clin_name.txt | awk  '{print $1}');
         cp *$out* /temp/hgig/fi1d18/TRG45/snp/pre/
    else cp *$out* /temp/hgig/fi1d18/TRG45/snp/post/;  fi;  done;

That returns

cp: cannot stat `OC/ST/026/S/T1*': No such file or directory
[fi1d18@cyan01 snp]$

I really don't know how to solve this :(

$\endgroup$
  • $\begingroup$ This is more of a job for snakemake or similar. You'd end up following the same logic in R if you really prefer that. Show us what you've tried so far, since there's no reason someone should write a custom program for you. $\endgroup$ – Devon Ryan Nov 12 '19 at 12:30
1
$\begingroup$

Assuming the names of all the files from one group are in file named list.

cat pre_post.list | awk '{print $2}' | sed 's@.*/@@'  > post_list.txt
cat pre_post.list | awk '{print $1}' | sed 's@.*/@@'  > pre_list.txt

Now you have two number list

    for item in  $(cat  pre_list.txt | grep -Eo '[0-9]{1,4}');
    do if grep -q $item clin_name.txt ;
    then out=$(grep $item clin_name.txt | awk  '{print $1}');
         cp *$out* /dir/for_pre_files/
    else echo post_list $item;  fi;  done

for post

    for item in  $(cat  post_list.txt | grep -Eo '[0-9]{1,4}');
    do if grep -q $item clin_name.txt ;
    then out=$(grep $item clin_name.txt | awk  '{print $1}');
         cp *$out* /dir/for_post_file/
    else echo Prelist $item;  fi;  done

or you could do this if one that isn't in post belongs in pre

    for item in  $(cat  post_list.txt | grep -Eo '[0-9]{1,4}');
    do if grep -q $item clin_name.txt ;
    then out=$(grep $item clin_name.txt | awk  '{print $1}');
         cp *$out* /dir/for_post_file/
    else cp *$out* /dir/for_pre_file/;  fi;  done
| improve this answer | |
$\endgroup$
  • $\begingroup$ Sorry I tried your kindly code but did not work and I got this error in very early stage [fi1d18@cyan01 ~]$ cat pre_post.list | awk '{print $2}' | sed 's@.*/@@' > post_list.txt cat: pre_post.list: No such file or directory $\endgroup$ – Exhausted Nov 18 '19 at 11:11
  • 1
    $\begingroup$ You have to change the names in my bash code to reflect the names of the actual files on my computer $\endgroup$ – Michael Hearn Nov 18 '19 at 14:23
  • $\begingroup$ Thank you I am getting this the for loop grep: clin_name.txt: No such file or directory post_list 069 this being repeated for all of samples $\endgroup$ – Exhausted Nov 22 '19 at 17:01
  • 1
    $\begingroup$ You need to replace all the file names in the script with your file names. $\endgroup$ – Michael Hearn Nov 22 '19 at 17:04
  • 1
    $\begingroup$ file that contains all OC/AH/120/E/T3 LP6005409-DNA_F01 OC/AH/126/E/T1 LP2000325-DNA_A01 OC/AH/136/E/T3 LP6005409-DNA_E02 $\endgroup$ – Michael Hearn Dec 4 '19 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.