[bug] grep -r [ with / without piping ]

Bug #1071447 reported by Tejas Barot
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
grep (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

Hello,

1) Description: Ubuntu 12.10
Release: 12.10

2) grep:
  Installed: 2.12-2
  Candidate: 2.12-2
  Version table:
 *** 2.12-2 0
        500 http://archive.ubuntu.com/ubuntu/ quantal/main i386 Packages
        100 /var/lib/dpkg/status

3) grep -r <grep-text> should not give any output if i do not specify path of file, and also cat tejasbarot.txt | grep -r "tejasbarot"
should not give any output if there is no matching text in tejas.txt

4)Let's say, There is one text file called tejasbarot.txt and written text "tejasbarot.com" in that file, Now If I execute grep -in "tejasbarot" and Press Enter it is pausing on terminal and Not executing command,This is expected behavior.

But If I execute grep -r "tejasbarot123" without specifying file's path it is searching in Current Working Directory and if i am search in this way cat tejasbarot.txt | grep -r "tejasbarot123" even if its not matching the text it is trying to search in all files of current working directory.

So I feel that specifying -r with grep command is not providing correct result. This is very basic package and consider as major bug of grep.

Expecting very quick fix on the same.

Thanks & Regards,
Tejas Barot
http://www.tejasbarot.com
http://linuxforums.tejasbarot.com

summary: - grep -r [ with / without piping ]
+ [bug] grep -r [ with / without piping ]
description: updated
Revision history for this message
actionparsnip (andrew-woodhead666) wrote :

What about:

grep tejasbarot tejasbarot.txt

Waste of a cat with:

cat tejasbarot.txt | grep -r "tejasbarot"

it's simply not needed. Also, as you are searching a file, the -r does nothing, so can also be omitted.

If you run:

grep -r con *

It will output files, however. Without the asterick, the terminal hangs here too.

Revision history for this message
Tejas Barot (networking-dept) wrote :

Hello,

Got your poing its waste of cat with

cat tejasbarot.txt | grep -r "tejasbarot"

But This was just a scenario, There are many other situation where we need to put grep with pipe and with -r. So it was just a simple one scenario but grep -r behaviour is totally unexpected.

As already mentioned, If I execute grep -r "tejasbarot" and don't specify path then also it is search in Current WOrking directory this is also not as expected.

Hope this is clear to you.

Revision history for this message
Tejas Barot (networking-dept) wrote :

Hello,

I know we can omit but behavior is not unexpected. Wrong result that is my question.

Thanks & Regards,
Tejas Barot
www.tejasbarot.com
linuxforums.tejasbarot.com

Changed in grep (Ubuntu):
status: New → Confirmed
Revision history for this message
Miguel J (mjulier) wrote :

I encountered this bug too, and it broke several scripts in my set-up.

It seems that, when no input files are given (meaning input from standard input, or pipe), "grep -r" and "rgrep" search from "*": all the files in the current directory.

This is an easy workaround, that does not break any compatibility: add "-" at the end of the command (meaning: the input is the standard input).

$ grep -r 'end$' -
No match: this line will not be printed
Match: this line will be printed because of its end
Match: this line will be printed because of its end

$ rgrep --version
grep (GNU grep) 2.12

Revision history for this message
Ma Hsiao-chun (mahsiaochun) wrote :

Have you checked the NEWS file?

http://git.savannah.gnu.org/cgit/grep.git/tree/NEWS#n162

I don't think it is a bug, it is a feature that break some current script/habit unfortunately.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.