Beginner looking for help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Beginner looking for help
# 1  
Old 11-12-2010
Question Beginner looking for help

Hello,

I am trying to write a script that reads names from a file called input, removes names if they have the same letter next to each other and prints the others.

e.g. Colin & John would be printed
Garry & Lynn would be removed

My thinking is that I read in each name and break it in to a substring and compare each elements neighbour with itself. If at any point array[i] = array[i+1] the script discards the name and moves on to the next one.

My problem lies with printing the valid names. I have used a nested if statement if [ "$i" == "$((${#s}))" ]; so that once the script has reached the end of a name and it hasn't been discarded it must be valid and therefore should be printed. The script prints nothing and I am at a loss as to why. I would be very grateful if anyone could point out the flaw to me.

Regards,
Colin

***script***
Code:
var=`cat input`

for j in $var; do
                s=($j)

                for i in $(seq 0 $((${#s} - 1))); do
                            if [ "${s:$i:1}" == "${s:$[i+1]:1}" ]; then
                                        break
                                        if [ "$i" == "$((${#s}))" ]; then
                                                    echo $j
                                                    break
                                        fi
                            fi
               done
done

****Contents of input*****
garry
colin
john
gerry
mike
lynn
# 2  
Old 11-12-2010
Depending on the version of grep on your distro, you could do it with a single line:

grep -v '\([[:alpha:]]\)\1' input

Hope this helps.
# 3  
Old 11-13-2010
Thanks in2nix4life,

That worked perfectly. Can you explain how '\([[:alpha:]]\)\1' works to me?

Colin

# 4  
Old 11-13-2010
MySQL

in this grep have been used backreference expression
in this example
Code:
# grep -v '\([[:alpha:]]\)\1' file

-v --> means for except for and print others (does not matches)
\( pattern \) --> tells expression which pattern to referenced
[[:alpha:]] --> Any alphabetic character so [A-Z] or [a-z]
\1 --> our referenced string which we say in \( pattern \)
so \( pattern \) 's equal to \1

finally if any line contains same char ( [A-Z] or [a-z] ) in side by side
for example (Tesst) and do not print this ( grep -v )


and i prefer in sed Smilie
Code:
# sed '/\(.\)\1/d' infile


regards
@ygemici
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Bash beginner

Hello so I've stored some csv data to be read into variables like this Name,Team,Shop,Shoe etc,etc,etc,etc Code: sep="," { while IFS=$sep read Name Team Shop Shoe do count=1 dirname=$Name while do ((count++)) dirname="${Name}$count" (4 Replies)
Discussion started by: darklord173
4 Replies

2. Red Hat

Help me please i am beginner

i have windows 8 host on Dell Laptop vmware 9 redhat 7.2 iso downloaded through redhat official site after installation on vm it only boots into text dont show graphics Please guide:( (1 Reply)
Discussion started by: hananabbas
1 Replies

3. Programming

beginner to c programming

hii friends i m fairy new to c programming.can any one suggest some good websites and some good books for beginner (6 Replies)
Discussion started by: pankajchandel
6 Replies

4. UNIX for Dummies Questions & Answers

Beginner - What Should I Do First?

Hi people.... I have just started to learn unix.I want to know which version of Unix to install plus how to install it.I need to practise and make myself aware of how unix works.My thread is from an educational point of view.Also please feel free to give your suggestions as I am... (3 Replies)
Discussion started by: amit.kanade1983
3 Replies

5. Shell Programming and Scripting

beginner's question

i write a shell program and i execute that after i made a bin directiry in my home directory(i didnt give any permissions) now i change to other directory.then i execute it bit it is saying " no such a file or directory" can any one help me please (2 Replies)
Discussion started by: wkbn86
2 Replies

6. Shell Programming and Scripting

Need help for scripting beginner

hy guys, I have perl script provided to me but i need to convert it into shell .Can you help me in this using sed shell command. cat /etc/passwd |perl -ne '/^(\w+):\w+: (\w+)/ and print "$1, $2\n";' (1 Reply)
Discussion started by: singh_king
1 Replies

7. Shell Programming and Scripting

Beginner Help

I need to write a script to test a nsort c program. I have written 8 .txt files with different cases. Also 8 .txt files with expected outcome. The shell I have written always "test pass" for the first case but always "fail" for the rest... Here is a portion of my code (as I still don't know how to... (5 Replies)
Discussion started by: thibodeau
5 Replies

8. UNIX for Dummies Questions & Answers

Beginner Help

hi guys, i have a DEl xps laptop cor 2 duo 2.2 i have vista installed on it i want to install a dual Boot UNIX on it.. can some one guide me ...cause i m tottaly new to UNIX i want to install unix on that laptop along with Vista.... thx any help would be deeply appreciated (sorry if i... (5 Replies)
Discussion started by: Farhan082
5 Replies

9. Programming

Beginner C

Anyone know where I can get started in C++ programming in unix? Any good free tutorials or websites to start at? I am okay in unix scripting but have never done c programming of any sort... What are the main advantages of using C++ ? (2 Replies)
Discussion started by: frustrated1
2 Replies

10. Shell Programming and Scripting

Please help. I am a beginner.

Alrigt, I need to write a shell script where it counts the number of folders and files and dispays "My home directory has 'x' files and 'y' directories." So, I was thinking of doing this. set x = `ls | wc` so, if I have 8 files and folders in my home directory, x is not 8. now, I was... (1 Reply)
Discussion started by: Lykathea Aflame
1 Replies
Login or Register to Ask a Question