checking co-presence of Var. - Shell or Perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting checking co-presence of Var. - Shell or Perl
# 8  
Old 10-16-2012
Hey masters!
I modified the script that elixir_sinari has provided. This modification is simple and help just to write the maximum number of the result (= total number of values equal to 1 in input) for each row. The code is now like this:

Code:
#!/bin/bash
awk 'NR>1{name[NR-1]=$1;for(i=2;i<=NF;i++) if($i==1) { oneset[NR-1,i]=1; q++ } val[NR-1]=q; q=0}
END{
for(i=1;i<=(NR-1);i++)
{
 if(i==1)
 {
  print "*"
  for(j=1;j<=(NR-1);j++)
   print name[j]
  printf "\n"
 }
 print name[i]"("val[i]")"
 for(j=1;j<=(NR-1);j++)
 {
  n=0
  for(k=2;k<=NF;k++)
   if(oneset[i,k] && oneset[j,k])
    n++
  print n
 }
 printf "\n"
}
}' ORS='\t' testin.txt

I am trying to make the output be like following table. So, instead of all the values it prints the values divided by the number in parenthesis for each row. This is the output so far:
* A B C D E
A(5) 5 3 3 2 3
B(5) 3 5 3 2 2
C(6) 3 3 6 2 4
D(4) 2 2 2 4 2
E(6) 3 2 4 2 6

But as I said I would like to have the values in each row divided by the number in parenthesis. To have following desired output:

* A B C D E
A(5) 1 0.6 0.6 0.4 0.6
B(5) 0.6 1 0.6 0.4 0.4
C(6) 0.5 0.5 1 0.33 0.66
D(4) 0.5 0.5 0.5 1 0.5
E(6) 0.5 0.33 0.66 0.33 1

I couldn't make it so far. Would be great if you can help me.
Thanks.
# 9  
Old 10-16-2012
This is a (very) slight modification to the previous script. You should've mentioned this requirement earlier.
Code:
awk 'NR>1{name[NR-1]=$1;for(i=2;i<=NF;i++) if($i==1) { oneset[NR-1,i]=1;count[NR-1]++}}
END{
for(i=1;i<=(NR-1);i++)
{
 if(i==1)
 {
  print "*"
  for(j=1;j<=(NR-1);j++)
   print name[j]
  printf "\n"
 }
 print name[i]
 for(j=1;j<=(NR-1);j++)
 {
  n=0
  for(k=2;k<=NF;k++)
   if(oneset[i,k] && oneset[j,k])
    n++
  print (count[i]==0)?"NA":(n/count[i])
 }
 printf "\n"
}
}' ORS='\t' OFMT='%.2f' file

This User Gave Thanks to elixir_sinari For This Post:
# 10  
Old 10-16-2012
I'm sorry elixir_sinari! :| Actually for two reasons. 1st I thought I can do it by my self and secondly I was not sure in which way I'm going to proceed my analysis! I learn alot from you man!! I'm going through the code and try to understand all the command abd the logic to use them. Thanks for your help, both in solving my problem and for teaching me!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting shell to Perl I run into shell built in function trap and need alternative in Perl

I am working on converting shell to Perl script. In shell we have built in function trap Do you know alternative in Perl or actually we don't need it? Thanks for contribution (3 Replies)
Discussion started by: digioleg54
3 Replies

2. Shell Programming and Scripting

Passing PERL var values to SH Shell Script

Greetings all, If I have a SH script that calls a PERL script in the following way: perl $HOME/scripts/config.properties And in the config.properties PERL file, this Perl script only sets a number of environmental parameters in the following way: #!/usr/bin/perl $VAR1 = ( ... (3 Replies)
Discussion started by: gikyo12
3 Replies

3. Shell Programming and Scripting

checking the request for urls - perl

hi everybody . i'm trying to extract a bunch of urls from an http request but when i do that i get nothing . here it's my code use LWP::UserAgent; $url = "$ARGV"; $ua = LWP::UserAgent->new; $req = HTTP::Request->new(GET=>$url); $res = $ua->request($req); if... (0 Replies)
Discussion started by: KiD0
0 Replies

4. Shell Programming and Scripting

Checking for presence of any files

Is there code in Cshell scripting to check for the presence of any files in the current directory (and only the current directory)? I tried: if (-r *) then ... but Cshell doesn't like that. Thanks, Paul Hudgens (0 Replies)
Discussion started by: phudgens
0 Replies

5. Shell Programming and Scripting

Checking for presence of any files

I have tried the following script to check for the presence of any files in a folder: if (-r *) then goto ZipMiscFiles else echo "" echo " No Miscellaneous files found. Exiting program." echo "" exit endif The -r works fine with the wildcard in combo with other... (4 Replies)
Discussion started by: phudgens
4 Replies

6. Shell Programming and Scripting

Perl error checking question

I am not very good with perl but trying to force myself to start learning... I have a script that calls three other scripts in variables. I want to use a if statement to check the exit status and not sure how to do it.. This is basically what I have, the individual scripts print either a Y or... (1 Reply)
Discussion started by: i9300
1 Replies

7. Shell Programming and Scripting

Perl data type checking

I am using perl 5.8.0. I need to check some values to see it they are floats. Our system does not have Data::Types so I can't use is_float. Is there something else that I can use? The only thing in Data is Dump.pm. I am not allowed to download anything to our system so I have to use what I have.... (3 Replies)
Discussion started by: ajgwin
3 Replies

8. Shell Programming and Scripting

Checking for the presence of a string within another string

How to check if a string in contained in another string ? Like Whether the String "brown" is contained in "A quick brown fox jumps over a lazy the dog" (1 Reply)
Discussion started by: hidnana
1 Replies

9. Shell Programming and Scripting

get a part from a $var in perl

Hi, I have a file which has list of files with some other info too.. say.. 1/1/2008./to/path/filename1.: ... ... something like that.. can anyone tell me how can i just open the file and read the contents and then cut just the filename1 and write it to an @array.. thanks (12 Replies)
Discussion started by: meghana
12 Replies

10. UNIX for Dummies Questions & Answers

How do I test for the presence of a file in Bourne Shell

How do I test for the presence of a file in Bourne Shell (3 Replies)
Discussion started by: vins
3 Replies
Login or Register to Ask a Question