Solved

Unix pattern macthin help needed

Posted on 2007-11-16
19
243 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
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
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

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
In tuning file systems on the Solaris Operating System, changing some parameters of a file system usually destroys the data on it. For instance, changing the cache segment block size in the volume of a T3 requires that you delete the existing volu…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

757 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

16 Experts available now in Live!

Get 1:1 Help Now