Help with replacing Array elements


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Help with replacing Array elements
# 1  
Old 05-23-2011
Error Help with replacing Array elements

Hi,
I have an array containing following sample information
Code:
@array = qw (chr02 chr02 chr02 chr02 chr02 chr03 chr03 chr04 chr04 chr05 chr05 chr05 chr07 chr07)

I need to replace all duplicate entries by an underscore to get the following output
Code:
@array = qw (chr02 _ _ _ _ chr03 _ chr04 _ chr05 _ _ chr07 _)

Can someone suggest how to get this as I found only how to delete/remove duplicate entries but not to replace.
Thanks in advance
CheersSmilie
# 2  
Old 05-23-2011
Try:
Code:
@array = map {$x=($x{$_})?"_":$_;$x{$_}=1;($x)} @array;

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 05-23-2011
Hi Bartus, That worked nicely, cheers.
My real problem is about handling 2 arrays and making other arrays from them
For example
Code:
@arrchr = qw(chr02 chr02 chr02 chr02 chr02 chr03 chr03 chr04 chr04 chr05 chr05 chr05 chr07 chr07 chr07);

Code:
@arrcov = qw(45 86 112 62 107 50 94 72 65 89 95 119 97 109 100);

Now what I'm trying to do is to create series of arrays named by unique entries in @arrchr and fill it with corresponding values from @arrcov, so as to get the following output
Code:
@chr02 =qw (45 86 112 62 107) #first 5 entries from @arrcov,
@chr03 =qw (50 94) #next 2 entries from @arrcov,
@chr04 =qw (72 65) #next 2 entries from @arrcov,
@chr05 =qw (89 95 119) #next 3 entries from @arrcov,
@chr07 =qw (97 109 100) #last 3 entries from @arrcov

How do I do that ?? Can you please enlighten on this ? I need to make these arrays to use them to plot graphs using GD::Graph module.
Cheers and thanks for your help and comments always Smilie
Good day !!
# 4  
Old 05-23-2011
I think the best way to do it is to use hash of array references, instead of arrays. Try this code:
Code:
#!/usr/bin/perl
@arrchr = qw(chr02 chr02 chr02 chr02 chr02 chr03 chr03 chr04 chr04 chr05 chr05 chr05 chr07 chr07 chr07);
@arrcov = qw(45 86 112 62 107 50 94 72 65 89 95 119 97 109 100);
for ($i=0;$i<=$#arrchr;$i++){
  push @{$h{"$arrchr[$i]"}}, $arrcov[$i];
}
print "chr02: @{$h{chr02}}\n";
print "chr03: @{$h{chr03}}\n";

You can then reference each of the "chr" elements using @{$h{chrXX}} syntax, so instead of @chr02 you should use @{$h{chr02}} and so on.
This User Gave Thanks to bartus11 For This Post:
# 5  
Old 05-23-2011
Thanks ever so much Bartus
You ROCK !!
Cheers
Good day Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get unique elements from Array

I have an array code and output is below: echo $1 while read -r fline; do echo "%%%%%%$fline%%%%%" fmy_array+=("$fline") done <<< "$1" Output: CR30903 YU0007 SRIL CR30903 Yogesh SRIL %%%%%%CR30903 YU0007 SRIL%%%%% %%%%%%CR30903 Yogesh SRIL%%%%% ... (8 Replies)
Discussion started by: mohtashims
8 Replies

2. Shell Programming and Scripting

Help reading the array and sum of the array elements

Hi All, need help with reading the array and sum of the array elements. given an array of integers of size N . You need to print the sum of the elements in the array, keeping in mind that some of those integers may be quite large. Input Format The first line of the input consists of an... (1 Reply)
Discussion started by: nishantrefound
1 Replies

3. Shell Programming and Scripting

Random elements from array

Hi I wanted to print random elements from an array at bash shell I use the following code, but I always see first element getting printed #!/bin/bash c=1 expressions=(pink red white yellow purple) while ]; do echo "The value of RANDOM is $RANDOM" selectedexpression=${expressions}]};... (5 Replies)
Discussion started by: Priya Amaresh
5 Replies

4. Programming

Array Elements Check

Hi everyone, :) I'm trying to make a simple C program that scans an array of chars to see if its elements are similar. I can't understand what's wrong. Could you help me to fix this? Here is the code. Thanks! #include<stdio.h> int main() { int arr; int i, len; int flag =... (10 Replies)
Discussion started by: IgorGest
10 Replies

5. Shell Programming and Scripting

Multiplication of array elements

Hi, I can't find out how to create correct code to get multiplication of each elements of array. Let's say I enter array into command line (2 3 4 5 6 8) and i need output 2*3*4*5*6*8=5760. I tried this one, but answer is 0. for i in $@; do mult=$((mult*i))done echo "mult: " $mult ... (4 Replies)
Discussion started by: rimasbimas
4 Replies

6. Shell Programming and Scripting

Grouping array elements - possible?

I have a script which takes backup of some configuration files on my server. It does that by using an array which contains the complete path to the files to backup. It copys the files to a pre defined dir. Each "program" has it's own folder, ex. apache.conf is being copied to /predefined... (7 Replies)
Discussion started by: dnn
7 Replies

7. Shell Programming and Scripting

Removing elements from an array

Hi I have two arrays : @arcb= (450,625,720,645); @arca=(625,645); I need to remove the elements of @arca from elements of @arcb so that the content of @arcb will be (450,720). Can anyone sugget me how to perform this operation? The code I have used is this : my @arcb=... (3 Replies)
Discussion started by: rkrish
3 Replies

8. UNIX for Dummies Questions & Answers

printing array elements

Is there a way to print multiple array elements without iterating through the array using bash? Can you do something like... echo ${array}and get all those separate elements from the array? (2 Replies)
Discussion started by: jrymer
2 Replies

9. Shell Programming and Scripting

Accessing array elements

Hi, My doubt is how to access array elements.. Situation is as below: #!/bin/ksh set -x typeset -i x=0 typeset -i y=0 typeset -i BID=0 typeset -i count=0 while ] ; do x=`expr $x + 1`; hwmgr show scsi > scsi.tmp while read line; do set... (1 Reply)
Discussion started by: mansa
1 Replies

10. UNIX for Dummies Questions & Answers

Deleting Array Elements

Hi, I am writing a BASH shell script. I have an array that will contain IN ANY ORDER the following elements: DAY 8D MO NS. I would like to erase the element DAY, but since the order of the elements in the array are random, I will not know which element # DAY is (ie it's not as simple as... (3 Replies)
Discussion started by: msb65
3 Replies
Login or Register to Ask a Question