Need some help with grep

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Need some help with grep
# 1  
Old 04-24-2011
Need some help with grep

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

Hello all, I'm relatively new to Linux/Unix. Took an introductory course to get myself exposed to all the different commands so I'd be ready for my scripting class. I do know a lot of the commands and their purpose but unfortunately I'm having some problems with syntax and such. All is explained below.
Smilie
1. The problem statement, all variables and given/known data:
The script I'm writing must contain the following:
Write a command syntax for showing:
search for line starting with letter Q
search for line ending with string "ab"
search for BOB, Bob, BOb or BoB
search for any phone numbers in the format "999-99999"
search for three letter word starting with "b" and ending with "t" like bit & but

2. Relevant commands, code, scripts, algorithms:
grep and some sub-commands


3. The attempts at a solution (include all code and scripts):
What I've written thus far:
# Searching for lines starting with Q
`grep -i '^Q' *`

# Searching for lines ending with the string ab
`grep '$ab' /etc`

# Searching for BOB Bob BOb or BoB
`grep '[BOB][Bob][BOb][BoB]' *`

# Searching for phone numbers in 999-99999 format
`grep '[0-999][0-99999]' *`

# Searching for words beginning with b and ending with t
grep (incomplete)

I've made several attempts just to make the first three commands work. Had a lot of command not found errors and the like. I'm stumped here. Even when the script runs nothing appears so I'm assuming that nothing matches but I'm almost certain here that I'm wrong. I've used grep with success before but it seems that using it in script is a whole different animal.

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Baker College of Jackson, Jackson MI, United States, Instructor Sohail Sadiq, LUX 211 Shell Scripting (Unable to post a link)




Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 04-24-2011
Quote:
Originally Posted by Bob07
`grep -i '^Q' *`
Why's it in backticks? What filename is * supposed to be? Why the -i? Otherwise it looks ok.

Quote:
`grep '$ab' /etc`
$ means 'end of string', so you've got it on the wrong side of ab. Also, why do you have it in backticks? And what filename is /etc supposed to be? Needs to be a file, not a dir. Otherwise, looks OK.

Quote:
# Searching for BOB Bob BOb or BoB
`grep '[BOB][Bob][BOb][BoB]' *`
Doesn't work that way. [BOB] looks for the letter B, or the letter O, or the letter B.

Since the first letter's always the same, you could have grep 'B[secondletters][thirdletters]' where secondletters and thirdletters are the allowable letters for those spots.

Also, you've got it in backticks again.

Quote:
# Searching for phone numbers in 999-99999 format
`grep '[0-999][0-99999]' *`
[] doesn't work like that.
Code:
grep '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]'

Also, what filename is * supposed to be?

Quote:
# Searching for words beginning with b and ending with t
grep (incomplete)
Are you allowed to use egrep?
Quote:
I've made several attempts just to make the first three commands work. Had a lot of command not found errors and the like.
that's because you keep putting them in backticks. So it runs the grep, then tries to run its output as a command.

Last edited by Corona688; 04-24-2011 at 05:10 PM..
# 3  
Old 04-24-2011
Quote:
Originally Posted by Corona688
Why's it in backticks? What filename is * supposed to be? Otherwise it looks ok.

The files thing has me confused: I had thought that grep would just look within the /etc directory for matches but apparently thats not how it works.(?) So I attempted to add a few files in my /home/user directory and added a few lines within the files using vi but when I run the grep command from the prompt it returns nothing. I'm using

grep '^efg' /home/useraccount - where efg is some random text I typed up for the beginning line.

$ means 'end of string', so you've got it on the wrong side of ab. Also, why do you have it in backticks? And what filename is /etc supposed to be? Needs to be a file, not a dir. Otherwise, looks OK.

Backticks will be removed. Wrong side? Okay, makes sense. And again, not understanding how it searches through files apparently. Wrote what I did above.

Doesn't work that way. [BOB] looks for the letter B, or the letter O, or the letter B.

Since the first letter's always the same, you could have grep 'B[secondletters][thirdletters]' where secondletters and thirdletters are the allowable letters for those spots.

Also, you've got it in backticks again.

Okay, will fix this.

[] doesn't work like that.
Code:
grep '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]'

Also, what filename is * supposed to be?

Ah, makes sense.

Are you allowed to use egrep? that's because you keep putting them in backticks. So it runs the grep, then tries to run its output as a command.
Thanks for the input. I'll work on correcting this and get back to you.

*Edit* I fail at quoting I guess . . .

Last edited by Bob07; 04-24-2011 at 05:39 PM.. Reason: Quoting
# 4  
Old 04-24-2011
Quote:
The files thing has me confused: I had thought that grep would just look within the /etc directory for matches but apparently thats not how it works.
Nope. It goes "grep pattern filename". See man grep.
Quote:
So I attempted to add a few files in my /home/user directory and added a few lines within the files using vi but when I run the grep command from the prompt it returns nothing.
Without knowing what you typed, and what the contents of the files were, it's impossible to say why. But grep expects filenames.
Quote:
grep '^efg' /home/useraccount - where efg is some random text I typed up for the beginning line.
/home/useraccount is a directory, presumably, not a filename, so won't work.

* means 'everything in the current directory', which may not make sense either depending on what the current directory is and what's in it.

Why not just give it an actual, real, filename?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inconsistent `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l`

i have this line of code that looks for the same file if it is currently running and returns the count. `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l` basically it is assigned to a variable ISRUNNING=`ps -eaf -o args | grep -i sfs_pcard_load_file.ksh |... (6 Replies)
Discussion started by: wtolentino
6 Replies

2. UNIX for Dummies Questions & Answers

Piping grep into awk, read the next line using grep

Hi, I have a number of files containing the information below. """"" Fundallinfo 6.3950 14.9715 14.0482 """"" I would like to grep for Fundallinfo and use it to read the next line? I ideally would like to read the three numbers that follow in the next line and... (2 Replies)
Discussion started by: Paul Moghadam
2 Replies

3. UNIX for Dummies Questions & Answers

Bash - CLI - grep - Passing result to grep through pipe

Hello. I want to get all modules which are loaded and which name are exactly 2 characters long and not more than 2 characters and begin with "nv" lsmod | (e)grep '^nv???????????? I want to get all modules which are loaded and which name begin with "nv" and are 2 to 7 characters long ... (1 Reply)
Discussion started by: jcdole
1 Replies

4. Shell Programming and Scripting

AWK/GREP: grep only lines starting with integer

I have an input file 12.4 1.72849432773174e+01 -7.74784188610632e+01 12.5 9.59432114416327e-01 -7.87018212757537e+01 15.6 5.20139995965960e-01 -5.61612429666624e+01 29.3 3.76696387248366e+00 -7.42896194101892e+01 32.1 1.86899877018077e+01 -7.56508762501408e+01 35 6.98857157014640e+00... (2 Replies)
Discussion started by: chrisjorg
2 Replies

5. UNIX for Dummies Questions & Answers

Advanced grep'in... grep for data next to static element.

I have a directory I need to grep which consists of numbered sub directories. The sub directory names change daily. A file resides in this main directory that shows which sub directories are FULL backups or INCREMENTAL backups. My goal is to grep the directory for the word "full" and then... (2 Replies)
Discussion started by: SysAdm2
2 Replies

6. UNIX for Dummies Questions & Answers

Difference between grep, egrep & grep -i

Hi All, Please i need to know the difference between grep, egrep & grep -i when used to serach through a file. My platform is SunOS 5.9 & i'm using the korn shell. Regards, - divroro12 - (2 Replies)
Discussion started by: divroro12
2 Replies

7. Shell Programming and Scripting

grep for certain files using a file as input to grep and then move

Hi All, I need to grep few files which has words like the below in the file name , which i want to put it in a file and and grep for the files which contain these names and move it to a new directory , full file name -C20091210.1000-20091210.1100_SMGBSC3:1000... (2 Replies)
Discussion started by: anita07
2 Replies

8. UNIX for Dummies Questions & Answers

| help | unix | grep (GNU grep) 2.5.1 | advanced regex syntax

Hello, I'm working on unix with grep (GNU grep) 2.5.1. I'm going through some of the newer regex syntax using Regular Expression Reference - Advanced Syntax a guide. ls -aLl /bin | grep "\(x\)" Which works, just highlights 'x' where ever, when ever. I'm trying to to get (?:) to work but... (4 Replies)
Discussion started by: MykC
4 Replies

9. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

10. Shell Programming and Scripting

MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else

Hi Guys, I need to set the value of $7 to zero in case $7 is NULL. I've tried the below command but doesn't work. Any ideas. thanks guys. MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else { print $7}}' ` Harby. (4 Replies)
Discussion started by: hariza
4 Replies
Login or Register to Ask a Question