Alternative command to grep -w option


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Alternative command to grep -w option
# 1  
Old 10-29-2015
Oracle Alternative command to grep -w option

Hi All,

We have few scripts where we are using grep -w option to do exact matching of the pattern. This works fine on most of our servers.
But I have encounter a very old HP-UX System(HP-UX B.11.00) where grep -w option is not available.

This is causing my scripts to fail. I need to change my code to make it work on these old servers.

Can you guys help me with an alternative for grep -w to do exact word matching.

Thanks in Advance

Regards,
Veeresham
# 2  
Old 10-29-2015
Something like this perhaps:

Code:
$ echo "ABC123" | awk '$0 ~ "(^|[ \r\n\t])"P"($|[ \r\n\t])"' P="ABC"
$ echo "123ABC123" | awk '$0 ~ "(^|[ \r\n\t])"P"($|[ \r\n\t])"' P="ABC"
$ echo "ABC 123" | awk '$0 ~ "(^|[ \r\n\t])"P"($|[ \r\n\t])"' P="ABC"
ABC 123

$ echo "123 ABC 123" | awk '$0 ~ "(^|[ \r\n\t])"P"($|[ \r\n\t])"' P="ABC"
123 ABC 123

$ echo "ABC 123" | awk '$0 ~ "(^|[ \r\n\t])"P"($|[ \r\n\t])"' P="ABC"
ABC 123

$

This User Gave Thanks to Corona688 For This Post:
# 3  
Old 10-29-2015
Try perl:

Code:
[user@host ~]$ cat file
the hello world pattern
the pattern hello world
the line without that word
pattern the hello world
the patternhello world
the hellopattern world
the hellopatternworld
[user@host ~]$
[user@host ~]$
[user@host ~]$ perl -ne '/\bpattern\b/ && print' file
the hello world pattern
the pattern hello world
pattern the hello world
[user@host ~]$

This User Gave Thanks to balajesuri For This Post:
# 4  
Old 10-30-2015
man grep:
Quote:
-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or
preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-
constituent characters are letters, digits, and the underscore.
So Corona688's proposal should be slightly modified like
Code:
echo "ABC,123" | awk '$0 ~ "(^|[^A-Za-z0-9_])"P"($|[^A-Za-z0-9_])"' P="ABC"
ABC,123

---------- Post updated at 10:13 ---------- Previous update was at 10:11 ----------

Does your grep understand extended regexes? Try
Code:
echo "ABC,123" | grep -E "(^|[^A-Za-z0-9_])ABC($|[^A-Za-z0-9_])"
ABC,123

These 3 Users Gave Thanks to RudiC For This Post:
# 5  
Old 10-30-2015
Hi RudiC,

Your solution works perfectly for me. Can you please explain me how grep -E "(^|[^A-Za-z0-9_])ABC($|[^A-Za-z0-9_])" is acting like -w option
# 6  
Old 10-30-2015
[^A-Za-z0-9_] replicates the "... non-word constituent character. Word- constituent characters are letters, digits, and the underscore" (cf man grep). This is ORed with begin-of-line ("^") or end-of-line ("$"), respectively. The -E option is necessary to accept the EREs.

---------- Post updated at 12:41 ---------- Previous update was at 12:39 ----------

In non-C locales, that regex may not be sufficient. The [[:alnum:]] class will take care of that, but may not be available on your system.
This User Gave Thanks to RudiC For This Post:
# 7  
Old 10-30-2015
Thanks a lot RudiC for the solution and explaination!

Regards,
Veeresham
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with grep, or alternative

say I have a big list of something like: sdg2000 weghre10 fewg53 gwg99 jwegwejjwej43 afg10293 I want to remove the numbers of any line that has letters + 1 to 4 numbers output: sdg weghre fewg gwg jwegwejjwej afg10293 (7 Replies)
Discussion started by: Siwon
7 Replies

2. Shell Programming and Scripting

Maxdepth command not working in AIX.Need alternative solution for this command

Hi All, I am trying to select 30 days older files under current directory ,but not from subdirectory using below command. find <Dir> -type f -mtime + 30 This command selecting all the files from current directory and also from sub directory . I read some documention through internet ,... (1 Reply)
Discussion started by: kommineni
1 Replies

3. Shell Programming and Scripting

Please suggest alternative to grep

Hi Experts, PFB my requirement: I have a file (named file1) containing numbers like: 372846078543002 372846078543003 372846078543004 372846078543005 372846078543006 I have another file (nemed file2)where lines containing these numbers(present in file1) are present; Eg: lppza087; <PERFB >... (6 Replies)
Discussion started by: niladri29
6 Replies

4. UNIX for Dummies Questions & Answers

alternative to the grep trick

Hi, We used to use the below commands often. ps -ef|grep bc ps -ef|grep abc|grep -v grep Both fairly returns the same result. For example, the process name is dynamic and we are having the process name in a variable, how we can apply the above trick. For example "a" is the... (11 Replies)
Discussion started by: pandeesh
11 Replies

5. Shell Programming and Scripting

-n option with grep command

Hi, what is the meaning of -n option before the grep command ? grep command searches for the specified string in the file tmp_crontab.txt but what does -n mean ? With Regards (1 Reply)
Discussion started by: milink
1 Replies

6. Shell Programming and Scripting

Need best grep option or alternative

Hello, I am processing a text file which contains only words with few combination of characters (it is a dictionary file). example: havana have haven haven't havilland havoc Is there a way to exclude only 1 to 8 character long words which not include space or special characters : '-`~.. so... (5 Replies)
Discussion started by: alekkz
5 Replies

7. Shell Programming and Scripting

Alternative to grep

How to find a particular line in a file without using grep? (3 Replies)
Discussion started by: proactiveaditya
3 Replies

8. Shell Programming and Scripting

--alternative option in getopt

Hi, i need to use --alternative option of getopt for ex . getopt -o a:c: --alternative pw: -- "$@" if i use like this, i am not getting any output.Please help me how to correct this.i need to have a combination of long and short options.But long options have to begin with - and not... (0 Replies)
Discussion started by: padmisri
0 Replies

9. UNIX for Dummies Questions & Answers

Grep alternative to handle large numbers of files

I am looking for a file with 'MCR0000000716214' in it. I tried the following command: grep MCR0000000716214 * The problem is that the folder I am searching in has over 87000 files and I am getting the following: bash: /bin/grep: Arg list too long Is there any command I can use that can... (6 Replies)
Discussion started by: runnerpaul
6 Replies
Login or Register to Ask a Question

Featured Tech Videos