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: Василий Алексеенко
 <vasilisc777 <at> gmail.com>
Subject: bug#63962: closed (Re: bug#63962: possible error in the grep program)
Date: Thu, 08 Jun 2023 21:08:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#63962: possible error in the grep program

which was filed against the grep package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 63962 <at> debbugs.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: 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

[Message part 3 (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 4 (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)]

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.