GNU bug report logs - #63962
possible error in the grep program

Previous Next

Package: grep;

Reported by: Василий Алексеенко <vasilisc777 <at> gmail.com>

Date: Thu, 8 Jun 2023 15:29:02 UTC

Severity: normal

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#63962: closed (possible error in the grep program)
Date: Thu, 08 Jun 2023 21:08:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 8 Jun 2023 14:07:16 -0700
with message-id <3c1dc8f7-6808-85ab-c27f-4738aa718068 <at> cs.ucla.edu>
and subject line Re: bug#63962: possible error in the grep program
has caused the debbugs.gnu.org bug report #63962,
regarding possible error in the grep program
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
63962: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63962
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Василий Алексеенко
 <vasilisc777 <at> gmail.com>
To: bug-grep <at> gnu.org
Subject: possible error in the grep program
Date: Thu, 8 Jun 2023 14:27:49 +0300
[Message part 3 (text/plain, inline)]
Hello,

in my work, I encountered a possible error in the grep program.
$ grep -V
grep (GNU grep) 3.4

1) The initial list of IP addresses in the file is formed start_list.txt .

2) Must be removed from the list start_list.txt IP addresses using a
larger file exclude_list.txt

grep -vF --file=exclude_list.txt start_list.txt > list_grep.txt

3) But after a series of checks, it turned out that grep "loses" 3 IP addresses
10.0.23.48
10.0.27.40
10.0.38.43

4) A bash script was written that solves the same problem in a different way

#!/bin/bash

:> list_while.txt
while read l
do
    if ! grep -m 1 -q "$l" exclude_list.txt; then
        echo ${l} >> list_while.txt
    fi
done < start_list.txt

5) The diff program has confirmed that there is indeed a difference in
the results

$ diff list_grep.txt list_while.txt
22a23
> 10.0.23.48
24a26
> 10.0.27.40
28a31
> 10.0.38.43

-- 
Best regards,
Vasilisc
[bug_grep.tar.gz (application/x-gzip, attachment)]
[Message part 5 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Василий Алексеенко
 <vasilisc777 <at> gmail.com>
Cc: 63962-done <at> debbugs.gnu.org
Subject: Re: bug#63962: possible error in the grep program
Date: Thu, 8 Jun 2023 14:07:16 -0700
On 6/8/23 04:27, Василий Алексеенко wrote:

> 1) The initial list of IP addresses in the file is formed start_list.txt .
> 
> 2) Must be removed from the list start_list.txt IP addresses using a
> larger file exclude_list.txt
> 
> grep -vF --file=exclude_list.txt start_list.txt > list_grep.txt

The line '10.0.23.4' in exclude_list.txt matches the line '10.0.23.48' 
in start_list.text. That is, the first line is a substring of the second 
line. So this usage of 'grep' doesn't do what you want.

To get the effect you want, also use the -x option. E.g.:

grep -vxF -f exclude_list.txt start_list.txt


This bug report was last modified 1 year and 349 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.