grep with regular expression


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep with regular expression
# 1  
grep with regular expression

Hi, guys. I have one question, hope somebody can give me a hand

I have a file called passwd, the contents of it arebelow:

***********************
...
goldsimj:x:5008:200:
goldsij2:x:5009:200:
whitej:x:5010:201:
brownj:x:5011:202:
goldsij3:x:5012:204:
greyp:x:5013:203:
...
**********************

I want to grep all the lines which has "goldsi" at the beginning, a "j" at position 7 or 8 in the first column and 200 in column 4.

I used the following code:

grep -G "^goldsi?j?:x:[0-9]{4,}:200"

However, it doesn't work. Does anybody know what is wrong with my code OR provide better solution?

Thank you very much for your time in advance

-Keyang
# 2  

Code:
awk -F: '/^goldsi/ && substr($1,7,2) ~ /j/ && $4 == 200' passwd

# 3  
Hi, cfajohnson.

Thank you very much for you reply. The answer is short but confused Smilie

-Keyang
# 4  
I joined this forum to learn more ways to do things using sed and awk. I'm going to break this out and cfajohnson can correct me as needed.

awk # call awk utility
-F: # break line into fields using colon as a delimiter
'/^goldsi/ # search for lines begining with goldsi
&& substr($1,7,2) ~ /j/ # AND containing a 'j' in positions 7 or 2 of field 1
&& $4 == 200' # AND containing 200 in field 4
passwd # in file passwd
# 5  
Quote:
Originally Posted by ldapswandog
I joined this forum to learn more ways to do things using sed and awk. I'm going to break this out and cfajohnson can correct me as needed.

awk # call awk utility
-F: # break line into fields using colon as a delimiter
'/^goldsi/ # search for lines begining with goldsi
&& substr($1,7,2) ~ /j/ # AND containing a 'j' in positions 7 or 2 of field 1
&& $4 == 200' # AND containing 200 in field 4
passwd # in file passwd
Hi, idapswandog.

Thanks for the explaination. Smilie

But the line below I am not quite agree with you.

&& substr($1,7,2) ~ /j/ # AND containing a 'j' in positions 7 or 2 of field 1


This line might mean get a substring from field 1 at position 7 for 2 characters long.

-Keyang
# 6  

No, substr($1,7,2) returns a substring of $1 that is 2 characters long beginning at the 7th character, i.e., the 7th and 8th characters.
# 7  
Thanks for the explanation cfajohnson, still learning... so do I get a 95% Smilie
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #474
Difficulty: Easy
Binary numbers are expressed in terms of a power of 2 instead of a power of 10.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep regular expression

I want to track only below: I am using below, but it doesn't work: (6 Replies)
Discussion started by: proactiveaditya
6 Replies

2. Shell Programming and Scripting

Grep + Regular expression or

Hi , I have few lines like A20120101.ANU.ZIP A20120401.ABC.ZIP A20120105.KJK.ZIP A20120809.JUG.ZIP A20120101.MAT.ZIP B20120301.ANU.XIP I want to filter by 1. Files starting with A and Ending With Z ( ^A.*.ZIP$) 2. And either ANU, or KJK or MAT in the file name. Hope my... (6 Replies)
Discussion started by: Anupam_Halder
6 Replies

3. UNIX for Dummies Questions & Answers

grep with variable and regular expression

i have a command line like this in csh script grep -i "$argv$" which i wanted to select the line ending with string provided as argument but it couldn't interpret the '$' (ending with).. any help? (3 Replies)
Discussion started by: ymc1g11
3 Replies

4. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

5. Shell Programming and Scripting

Help with grep / regular expression

Hi, Input file: -13- -1er- -1xyz1- -1xz12- -2ab1- -2ab2-- -143- Code: grep '^*\-' input.txt Wrong output: -13- -1xyz1- -2ab1- -2ab2-- (4 Replies)
Discussion started by: dragon.1431
4 Replies

6. Shell Programming and Scripting

grep and regular expression

Hi, I am executing a svnlook command to check to see if the following line exists. I need a regular expression to represent the line. A /test/test1/qa/test2/index.html A /test/test1/qa/test3/test.jpg A /test/test1/qa/test3/test1.jpg A /test/test1/qa/test4/test.swf I just need to extract... (9 Replies)
Discussion started by: kminkeller
9 Replies

7. UNIX for Dummies Questions & Answers

Help | unix | grep | regular expression

I have the following code: ls -al /bin | tr -s ' ' | grep 'x' ls -al: Lists all the files in a given director such as /bin tr -s ' ': removes additional spaces between characters so that there is only one space grep 'x': match all "x" characters that are followed by a whitespace. I was... (3 Replies)
Discussion started by: MykC
3 Replies

8. Shell Programming and Scripting

grep regular expression

please can someone tell me what the following regrex means grep "^aa*$" <file> I thought this would match any word beginning with aa and ending with $, but it doesnt. Thanks in advance Calypso (7 Replies)
Discussion started by: Calypso
7 Replies

9. UNIX for Advanced & Expert Users

regarding grep regular expression

When i do ls -ld RT_BP* i am getting the following list. drwxrwx--- 2 user group 256 Oct 17 10:09 RT_BP809 drwxrwx--- 2user group 256 Oct 17 10:09 RT_BP809.O drwxrwx--- 2 user group 256 Oct 17 10:09 RT_BP810 drwxrwx--- 2user group 256 Oct... (2 Replies)
Discussion started by: ukatru
2 Replies

10. Shell Programming and Scripting

grep : regular expression

guys, my requirment goes like this: I have a file, and wish to filter out records where 1. The first letter is o or O and 2. The next 4 following letter should not be ther I do not wish to use pipe and wish to do it in one shot. The best expression I came up with is: grep ^*... (10 Replies)
Discussion started by: RishiPahuja
10 Replies

Featured Tech Videos