Comparing Arrays?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparing Arrays?
# 1  
Old 06-08-2006
Comparing Arrays?

Is there anyway that I can compare two Arrays to see if any new strings have been added in them? eg:

Array 1: Joe Bob Jane
Array 2: Joe Bob Jane Greg

It would then output a new array with the changes:

Array 3: Greg

I'm not very good at shell scripting, and my google and forum searches have come up empty. I'd rather do the whole thing in bash, because this will be run on OSX, and you don't really get much else than bash unless you install developer tools, and the computers that I intend to use the script on will not have the develope tools.

Thanks in advance!
# 2  
Old 06-09-2006
Perhaps just use strings intead of arrays, e.g....
Code:
#!/usr/bin/bash

a1="Joe Bob Jane"
a2="Joe Bob Jane Greg"
a3=${a2#$a1}
echo $a3

# 3  
Old 06-09-2006
The problem with that is that if I try to do this (which is what will end up happening):
Code:
#!/bin/sh

a1="Joe Bob Jane"
a2="Joe Bob Jack Jane Greg"
a3=${a2#$a1}
echo $a3

The output I get is this:
Code:
Joe Bob Jack Jane Greg

And I need it to only return the words in the second string that weren't in the first, which is why I thought arrays would be better.
# 4  
Old 06-09-2006
This should only return the words in the second string that weren't in the first...
Code:
#!/usr/bin/bash

a1="Joe Bob Jane"
a2="Joe Bob Jack Jane Greg"
a3=$(printf "$a1\n$a2"|awk '{for(i=1;i<=NF;i++)if(NR==1)a[$i]=i;else if(!($i in a))print $i}')
echo $a3

# 5  
Old 06-09-2006
Code:
ruby -e 'puts (ARGV.last.split -
 ARGV[-2].split).join(" ")' "foo bar" "zed foo bar zab"
zed zab

Code:
newlisp -e '(silent)(println (join (difference
 (parse (last (main-args))) (parse (nth -2 (main-args)))) " "))' "foo bar" "zed foo bar zab"
zed zab

The newlisp executable, which is all you need, is about 170kb on my machine. You could put it on a floppy or a flash drive.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk arrays comparing multiple columns across two files.

Hi, I'm trying to use awk arrays to compare values across two files based on multiple columns. I've attempted to load file 2 into an array and compare with values in file 1, but success has been absent. If anyone has any suggestions (and I'm not even sure if my script so far is on the right lines)... (4 Replies)
Discussion started by: hubleo
4 Replies

2. Shell Programming and Scripting

Using arrays?

I have never used arrays before but I have a script like this: var1=$(for i in $(cat /tmp/jobs.021013);do $LIST -job $i -all | perl -ne 'print /.*(\bInfo.bptm\(pid=\d{3,5}).*/' | tr -d "(Info=regpid" | tr -d ')'; $LIST -job $i -all | cut -f7 -d','| sed -e "s/^\(*\)\(*\)\(*\)\(.*\)/\1... (2 Replies)
Discussion started by: newbie2010
2 Replies

3. Shell Programming and Scripting

Comparing 2 arrays but ignoring certain patterns

I'm trying to compare 2 array and print the difference at a 3rd file. However how am i going to compare this 2 arrays by ignoring certain patterns: For example: 1st array contains: ctahci cptcsa0 ctsata:25:seed cptcsa1:50:seed ctsata_1:25:seed 2nd array contains: cptcsa0 ctsata... (0 Replies)
Discussion started by: hongping
0 Replies

4. Shell Programming and Scripting

How can I use the arrays ?

Hi all, I have a file test1.txt with the below contents abc def ghj xyz I tried printing these values using arrays. Script tried : =========== set -A array1 `cat test1.txt` count=${#array1 } i=0 while do echo "element of array $array1" done (1 Reply)
Discussion started by: dnam9917
1 Replies

5. UNIX for Dummies Questions & Answers

Comparing lists.. Arrays maybe?

Problem Part 1. Gather data from linux server and output to a file named data_DDMMYY Output file must contain the file name and size Part 2. Compare todays data_DDMMYY to yesterdays data_DDMMYY and output results to a file named difference_DDMMYY Output file must show the difference in... (3 Replies)
Discussion started by: Aussiemick
3 Replies

6. Programming

question about int arrays and file pointer arrays

if i declare both but don't input any variables what values will the int array and file pointer array have on default, and if i want to reset any of the elements of both arrays to default, should i just set it to 0 or NULL or what? (1 Reply)
Discussion started by: omega666
1 Replies

7. Shell Programming and Scripting

PERL: simple comparing arrays question

Hi there, i have been trying different methods and i wonder if somebody could explain to me how i would perform a comparison on two arrays for example my @array1 = ("gary" ,"peter", "paul"); my @array2 = ("gary" ,"peter", "joe"); I have two arrays above, and i want to something like this... (5 Replies)
Discussion started by: hcclnoodles
5 Replies

8. Web Development

PHP arrays in arrays

PHP question... I have an SQL query that's pulled back user IDs as a set of columns. Rather than IDs, I want to use their names. So I have an array of columns $col with values 1,7,3,12 etc and I've got an array $person with values "Fred", "Bert", "Tom" etc So what I want to do is display the... (3 Replies)
Discussion started by: JerryHone
3 Replies

9. Shell Programming and Scripting

Comparing arrays in perl

Hi all, I am trying to compare two arrays in perl using the following code. foreach $item (@arrayA){ push(@arrayC, $item) unless grep(/$item/, @arrayB); ... (1 Reply)
Discussion started by: chriss_58
1 Replies

10. Shell Programming and Scripting

comparing two arrays or strings in bash

Hi there, im having issue with comparing two variables, in a bash script. im trying to do the following: - get a word from user 1 - split the word into array - get a character from user2 trying to compare the character entered by user 2 with every single character in the array... (2 Replies)
Discussion started by: new2Linux
2 Replies
Login or Register to Ask a Question