Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
398 views
in Technique[技术] by (71.8m points)

grep - Grepping for exact words with UNIX

I want to search Exact word pattern in Unix. Example: Log.txt file contains following text:

aaa
bbb
cccaaa   ---> this should not be counted in grep output looking for aaa

I am using following code:

count=$?
count=$(grep -c aaa $EAT_Setup_BJ3/Log.txt)

Here output should be ==> 1 not 2, using above code I am getting 2 as output. Something is missing, so can any one help me for the this please?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Use whole word option:

grep -c  -w aaa $EAT_Setup_BJ3/Log.txt

From the grep manual:

-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.

As noted in the comment -w is a GNU extension. With a non GNU grep you can use the word boundaries:

grep -c "<aaa>" $EAT_Setup_BJ3/Log.txt

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...