Grep questions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep questions
# 1  
Old 11-13-2009
Grep questions

Hello All,

I have few of questions related to Grep given below:

1. Like Perl, is it possible in Grep to negate characters in square brackets. For example in Perl, if '^' is used inside '[]' then it acts as a negation characters. Can same be achieved through Grep's regular expression.

2. How do we match special characters in Grep?

3. I have following file:
cat /tmp/pk.ldif

Quote:
dn:ou=~,='<>:;",ou=Company,ou=Personal,o=paragkalra.com
dn:cn=CEO,ou=[]{}!@#%*,ou=Company,ou=Personal,o=paragkalra.com
dn:ou=76884580,ou=Company,ou=Personal,o=paragkalra.com
dn:ou=People,ou=76884580,ou=Company,ou=Personal,o=paragkalra.com
dn:ou=Groups,ou=76884580,ou=Company,ou=Personal,o=paragkalra.com
My aim is to find only those files starting with dn, and containing the string 'ou=' exactly 3 times. Can anybody why this is not working:


Quote:
grep -i "^dn:(ou=[[:alnum:]]+,){3}" /tmp/pk.ldif
# 2  
Old 11-13-2009
Regular expressions with grep are platform dependent.

Some versions of grep will not accept a regular expression unless you set a switch instructing grep that a regex is used.

For example, on my desktop Mac OSX from the grep man page:


Code:
       -G, --basic-regexp
              Interpret  PATTERN  as  a  basic regular expression (see below).
              This is the default.

So, you need to look at your version of grep and find out what flags to set to use a regex (or maybe it is your default and you don't need a switch).

How about your version of grep?
# 3  
Old 11-13-2009
Quote:
GNU grep 2.5.3

Copyright (C) 1988, 1992-2002, 2004, 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 4  
Old 11-13-2009
FYI, on my Mac:

Code:
apple:~ neo$ egrep -i "^dn:(ou=[[:alnum:]]+,){3}" /tmp/pk.ldif 
dn:ou=76884580,ou=Company,ou=Personal,o=paragkalra.com
dn:ou=People,ou=76884580,ou=Company,ou=Personal,o=paragkalra.com
dn:ou=Groups,ou=76884580,ou=Company,ou=Personal,o=paragkalra.com

# 5  
Old 11-13-2009
Quote:
Originally Posted by paragkalra
I have few of questions related to [GNU] Grep given below:

1. Like Perl, is it possible in Grep to negate characters in square brackets.
Yes, and this is true of probably all regular expressions. The syntax is nearly identical across all platforms; however there may be variations on handling special characters such as the dash (-), the brackets ([ and ]) and the caret (^) itself. Character classes, such as [[:digit:]] work too, but there are slight differences.

Quote:
Originally Posted by paragkalra
2. How do we match special characters in Grep?
You escape them with the backslash (\), as you usually do in perl. The problem is that in the normal grep mode, some special characters [ ] ^ $ . * are always on, and some ( ) ? + { } are on when you escape them. However, if you use "egrep" (or -E with GNU grep), you get the situation where all special characters are "magical" unless you escape them.

Quote:
Originally Posted by paragkalra
3. My aim is to find only those files starting with dn, and containing the string 'ou=' exactly 3 times. Can anybody why this is not working:
Yeah, because grep treats each separate line as a new search space. So the whole idea of matching a set of 3 lines with (atom){3} won't work, period. So grep is not the right tool here unless you first use tr or sed to translate all newlines into some other caracter (x1B for instance). Then you need to use egrep or grep -E and your regexp *might* work.
# 6  
Old 11-13-2009
Thanks to all...I was able to work out the negation as well
EG:
Quote:
'^dn:\(ou=[^,]\+,\)\{1\}ou=Company,ou=Personal,o=paragkalra.com' /tmp/pk.ldif
# 7  
Old 11-13-2009
Quote:
Originally Posted by paragkalra
Thanks to all...I was able to work out the negation as well
EG:
I am also running GNU grep. I could not get your last solution to work.

Please post your exact command from the command line and (correct) output.

Thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

awk questions using sort and grep

1. The problem statement, all variables and given/known data: So i'll probably get told off for this but I have a few problems and rather than clog up the whole forum I'll post them here. Please bare in mind I am a complete novice when it comes to all this and so if you help please treat me like a... (4 Replies)
Discussion started by: jamesb18
4 Replies

2. Shell Programming and Scripting

Sed/grep questions

Hi. I have a txt file. I need to make a copy of the lines which are beginning with a mobile phone number, or a fix phone number. I have to copy thoose lines in numbers.txt, after that i have to delete then from the originally file. In numbers.txt i need to write a prefix before each number. if the... (1 Reply)
Discussion started by: T720
1 Replies

3. UNIX for Dummies Questions & Answers

Couple of questions wth grep/sort

I have different things that I was trying to do but am kind of struggling with this since I'm a Linux noob. The backround is that I have two files with student names in the same directory, and each file lists the student name, their major and their grade level. What is the most efficient way to... (6 Replies)
Discussion started by: tastybeer
6 Replies

4. UNIX for Dummies Questions & Answers

grep and sed exact match questions

This was mistaken as homework in a different forum, but is not. These are questions that are close to what I am trying to do at work. QUESTION1: How do you grep only an exact string. I am using Solaris10 and do not have any GNU products installed. Contents of car.txt CAR1_KEY0 CAR1_KEY1... (1 Reply)
Discussion started by: thibodc
1 Replies

5. Shell Programming and Scripting

Some questions about grep/awk

Hi guys. I need to filter some values from a number of log files. One of the files is: Interconnect Utilisation Results: Achieved Maximum Number of Concurrent Connections: 17 Statistics for Average Number of Concurrent Connections: Point Estimation: Confidence Interval: ... (2 Replies)
Discussion started by: Faaz0
2 Replies

6. UNIX for Dummies Questions & Answers

Using Grep Questions

Hello All, 1.) I am searching for ".exe" in a text file 2.) I need to search for a hexadecimal entree of at least four digits (8 Replies)
Discussion started by: Omega1589
8 Replies

7. UNIX for Dummies Questions & Answers

Questions on GREP command

Hi, Is it possible to display a specific number of lines starting from a line having a particular text using grep command? e.g. I have a text file with the contents below: AAA BBB CCC DDD EEE FFF I want to display 3 lines starting with the line having "BBB" to get the result below:... (11 Replies)
Discussion started by: stevefox
11 Replies

8. UNIX for Dummies Questions & Answers

grep questions

I have the data file: A 1 2 3 BBB 4 5 6 A 7 8 9 I want to grep "A" then-skip a line-then-add two sublines: I my command: grep +3 "A" datafile (8 Replies)
Discussion started by: bobo
8 Replies

9. UNIX for Dummies Questions & Answers

Unpratical SED and GREP questions

Hello every one, I have read a little about SED and GREP but I do not know how to do this: Using SED or GREP: "reverse all three letter words" "replace the last two digits in any string of digits by zeros (0)" "remove lines that start and end with the same word" and I have more like... (5 Replies)
Discussion started by: Lem2003
5 Replies

10. UNIX for Dummies Questions & Answers

Simple grep questions

Hi all, My boss wants me to find out how often e-m users are accessing their account:confused:. The mail server keeps log of all logins. I want to use grep the 'usernames', but it should come out the moment it first encounters the username in the log. Can I do that? I want to avoid 10+ greps... (2 Replies)
Discussion started by: nitin
2 Replies
Login or Register to Ask a Question