grep this!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep this!
# 1  
Old 07-31-2008
grep this!

This might sound easy but its not...

I have a file a with the following data...including the 1,2 and 3

1 this.is.it
2 is.it
3 this.is

now i need to grep for "is.it" ONLY in the file without any data manipulation like grep -v,cut etc,. In other words my output should be "is.it" only

How do i do it?
# 2  
Old 07-31-2008
You have 28 posts and you don't know how to use code tags or how to explain your problem ?
Try again please.
# 3  
Old 07-31-2008
If your grep has the -o option, use that. A brief reading of the manual page should have told you that already.

Code:
grep -o 'is\.it' file

The backslash is necessary because the dot has a special meaning in regular expressions (it matches any one character, except newline).
# 4  
Old 07-31-2008
hi

Hi Era,

Thanks for your reply...but with grep -o 'is\.it' file , the output would be as follows

is.it
is.it

that is "is.it" appears twice in the output...I know we can do an uniq to get it only once but as I said earlier I dont want to do any data manipulations. Is there any direct command which can give the desired output?
# 5  
Old 07-31-2008
It's not clear on what criteria it should be unique. Do you mean grep lines matching only that text? There is no way in grep to make the output unique; the "data manipulations" as you call them are inherent to the design philosophy of these tools.

This searches for "is.it" and no other text:

Code:
grep '^[^A-Za-z]*is\.it[^A-Za-z]*$' file

The expression [^A-Za-z]* means any number of (that's the trailing asterisk; "any number" includes zero) characters which are not A through Z or a through z. Caret (^) matches beginning of line, and dollar sign ($) matches end of line. Hence, any line containing "is.it" and no other alphabetics before or after.

However, with -o the whole match will be printed, and in that case, this means the whole line. You can use sed to make substitutions on the same pattern:

Code:
sed -n 's/^[^A-Za-z]*\(is\.it\)[^A-Za-z]*$/\1/p' file

This replaces the whole line with just the part between the \( parentheses \) and then prints the resulting line.

Tell us again why you need this to be a single command?
# 6  
Old 07-31-2008
Try awk:
Code:
awk '$2=="is.it"{print $2}' file

# 7  
Old 07-31-2008
thanks guys

Thanks Era and Danmero..

Both your solutions work great! but i would go for the grep option as i am using the grep -f option which is not available with awk.

Era.. your grep solution can be further shortened to this..

grep '^[^A-Za-z]*is\.it$' file

Thank you!
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