Solved

Unix pattern macthin help needed

Posted on 2007-11-16
19
254 Views
Last Modified: 2011-09-20
Hi guys i'm tryin to write a hangman script and need a bit of help wit some writing a function.
I'm tryin to wite a hangman game andhave got a bit stuck now. I'm tryin to compare a inputed letter into the script with the secret word of the game.  without the use of sed or awk. e.g if a user inputs "a"i want t compare the letter to every letter in the secret word of the game i dont want to use sed or awk so an example with erm will not gain the points thankyou or ur help
0
Comment
Question by:DSwiftie
  • 9
  • 8
  • 2
19 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 20303045
if echo $inputed_letter |  grep [$secretword] ; then echo match ; fi
0
 

Author Comment

by:DSwiftie
ID: 20303684
lets say at the start of the game i wanted to use "_" to represent each letter how do i get and every time the correct letter is inputed how do i get it to first display the _ and replace each underscore evertime the correct letter is inputed
0
 
LVL 84

Expert Comment

by:ozo
ID: 20303709
echo $secretword | tr -c $inputed_letter _
0
 
LVL 84

Expert Comment

by:ozo
ID: 20303718
You may want to either make that echo -n or initialize $inputed_letters to \n
0
 

Author Comment

by:DSwiftie
ID: 20305047
wat do u mean by intialize it to \n not ever used it before
0
 

Author Comment

by:DSwiftie
ID: 20305212
oh yea one more thing how do i get the script to show a  _ for every letter of the word when the game is started i know its a simple question but it makes it easier to know how to replace each _

cheers for ur help me well appricated
0
 

Author Comment

by:DSwiftie
ID: 20305218
think to better understand the code to replace the _ i need to understand how to get each letter to print a _ for letter of secreword
0
 
LVL 84

Expert Comment

by:ozo
ID: 20306936
echo -n $secretword | tr -c _ _
0
 

Author Comment

by:DSwiftie
ID: 20307365
that commands really helps but i'm tryin to make sure sure the speace is left between each _

get if therunning word is dog

then it should print _ _ _ and not ___ as that above one sems to be doin sori to b a pain i'm a complete noob at unix
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 84

Expert Comment

by:ozo
ID: 20307533
You said no sed or awk, but what about perl?
0
 

Author Comment

by:DSwiftie
ID: 20308141
have nevver even heard of perl i might have to do it using a while statement of somethin i gues while cutin each letter of the word out to print each of the _ _ prob is replacing the _ with a letter will be my main problem. And here i thought i was finished with teh script. Nywayz m8 thankyou very much for your help i know i ended up askin more than i had stated above thx for the help
0
 

Author Comment

by:DSwiftie
ID: 20309408
just out of inrest how wuld i do the _ _ _ using perl b4 i start tryin ny long complicated while loops
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20309839
Why the restriction with sed or awk?  Using Perl would be in the same category as using sed/awk.
0
 
LVL 48

Expert Comment

by:Tintin
ID: 20309854
For example, to use Perl, you'd do

echo dog | perl -pe 's/./_ /g'

which the sed equivalent is

echo dog | sed "s/./_ /g"
0
 

Author Comment

by:DSwiftie
ID: 20316267
i can't explain sed and awk n i just realised perl thus so i dont want to use erm i wuld have prefered not usin some special lang completely tbh
0
 
LVL 84

Expert Comment

by:ozo
ID: 20316872
shells are also special languages,  and not languages particularly suited to the task

#!/bin/bash
for (( i=${#secretword}; $i ; --i )) ; do echo -n "_ " ; done
0
 
LVL 84

Expert Comment

by:ozo
ID: 20316916
#!/bin/bash
echo ${secretword//?/_ }
0
 
LVL 84

Accepted Solution

by:
ozo earned 350 total points
ID: 20316961
#!/bin/bash
secretword="d o g"
guesses=" _"
while [[ "${secretword//[^$guesses]/}" != "$secretword" ]] ; do
  read guess
  if [[ ${guess/[a-z]/_} == "_" && ${guess/[^$guesses]/#} == "#" ]] ; then
    guesses="$guesses$guess"
    echo ${secretword//[^$guesses]/_}
  fi
done
0
 

Author Comment

by:DSwiftie
ID: 20318726
that will do thankyou vey much for your help m8 well appricated culd never hav done with without u
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Let's say you need to move the data of a file system from one partition to another. This generally involves dismounting the file system, backing it up to tapes, and restoring it to a new partition. You may also copy the file system from one place to…
Every server (virtual or physical) needs a console: and the console can be provided through hardware directly connected, software for remote connections, local connections, through a KVM, etc. This document explains the different types of consol…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now