From unknown Sun Aug 10 16:51:01 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#33972 <33972@debbugs.gnu.org> To: bug#33972 <33972@debbugs.gnu.org> Subject: Status: grep -vf <() filters all rows Reply-To: bug#33972 <33972@debbugs.gnu.org> Date: Sun, 10 Aug 2025 23:51:01 +0000 retitle 33972 grep -vf <() filters all rows reassign 33972 grep submitter 33972 luke@gavelfamily.com severity 33972 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 04 00:15:22 2019 Received: (at submit) by debbugs.gnu.org; 4 Jan 2019 05:15:22 +0000 Received: from localhost ([127.0.0.1]:46141 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gfHpK-0005kG-5A for submit@debbugs.gnu.org; Fri, 04 Jan 2019 00:15:22 -0500 Received: from eggs.gnu.org ([208.118.235.92]:36441) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gfHf1-0005Up-2T for submit@debbugs.gnu.org; Fri, 04 Jan 2019 00:04:43 -0500 Received: from lists.gnu.org ([208.118.235.17]:59524) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gfHf0-0002Tj-NH for submit@debbugs.gnu.org; Fri, 04 Jan 2019 00:04:42 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45668) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gfHez-0000JM-TK for bug-grep@gnu.org; Fri, 04 Jan 2019 00:04:42 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,HTML_MESSAGE, RCVD_IN_DNSWL_NONE autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gfHeu-0002KT-Ue for bug-grep@gnu.org; Fri, 04 Jan 2019 00:04:41 -0500 Received: from atl4mhob20.registeredsite.com ([209.17.115.114]:36146) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gfHeu-0002AV-OU for bug-grep@gnu.org; Fri, 04 Jan 2019 00:04:36 -0500 Received: from webmail04.register.com (atl4webmail05pod1.mgt.hosting.qts.netsol.com [10.30.71.134]) by atl4mhob20.registeredsite.com (8.14.4/8.14.4) with ESMTP id x0454Rmj039157 for ; Fri, 4 Jan 2019 00:04:28 -0500 Received: from 100.42.254.37 (SquirrelMail authenticated user luke@gavelfamily.com) by webmail04.register.com with HTTP; Fri, 4 Jan 2019 00:04:28 -0500 Message-ID: <5ec58f0d642baabfce3a437a78c418e5.squirrel@webmail04.register.com> Date: Fri, 4 Jan 2019 00:04:28 -0500 Subject: grep -vf <() filters all rows From: luke@gavelfamily.com To: bug-grep@gnu.org User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: multipart/alternative;boundary="----=_20190104000428_87919" X-Priority: 3 (Normal) Importance: Normal X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.17.115.114 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Fri, 04 Jan 2019 00:15:20 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.3 (-----) ------=_20190104000428_87919 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by atl4mhob20.registeredsite.com id x0454Rmj039157 I have to pre-check for an empty set before passing it to grep: =A0 SAVED_RECORDs=3D($(sqlite3 -list -separator '/' files.db "SELECT FileName= FROM Files WHERE ModTime > '2018-12-31'")) #Returns an empty set NEW_RECs=3D($(ls * | grep -vf <(echo ${SAVED_RECORDs[@]} | tr ' ' '\n') #Returns an empty list because grep considers SAVED_RECORD= s to be universal rather than null set Workaround: if [ ${#SAVED_RECORDs[@]} -gt 0 ]; then =A0 NEW_RECs=3D($(ls * | grep -vf <(echo ${SAVED_RECORDs[@]} | tr ' ' '\n= ') #Now returns the expected subtraction of SAVED_RECORDs from NEW_RECs fi ------=_20190104000428_87919 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

I have to pre-check for an empty set before passing it to grep:

 

SAVED_RECORDs=($(sqlite3 -list -separator '/' files.db "SELECT FileName FROM Files WHERE ModTime > '2018-12-31'")) #Returns an empty set

NEW_RECs=($(ls * | grep -vf <(echo ${SAVED_RECORDs[@]} | tr ' ' '\n') #Returns an empty list because grep considers SAVED_RECORDs to be universal rather than null set

Workaround:

if [ ${#SAVED_RECORDs[@]} -gt 0 ]; then
  NEW_RECs=($(ls * | grep -vf <(echo ${SAVED_RECORDs[@]} | tr ' ' '\n') #Now returns the expected subtraction of SAVED_RECORDs from NEW_RECs
fi

------=_20190104000428_87919-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 02 04:04:28 2020 Received: (at 33972-done) by debbugs.gnu.org; 2 Jan 2020 09:04:28 +0000 Received: from localhost ([127.0.0.1]:38102 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1imwP6-0005Ji-9k for submit@debbugs.gnu.org; Thu, 02 Jan 2020 04:04:28 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:45258) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1imwP5-0005JQ-CO for 33972-done@debbugs.gnu.org; Thu, 02 Jan 2020 04:04:27 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 11C80160017; Thu, 2 Jan 2020 01:04:22 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 7Sh_LjMIuhSc; Thu, 2 Jan 2020 01:04:21 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 6AAA7160054; Thu, 2 Jan 2020 01:04:21 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id XiKBoQGRhk9q; Thu, 2 Jan 2020 01:04:21 -0800 (PST) Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 48932160017; Thu, 2 Jan 2020 01:04:21 -0800 (PST) To: luke@gavelfamily.com From: Paul Eggert Subject: grep -vf <() filters all rows Organization: UCLA Computer Science Department Message-ID: Date: Thu, 2 Jan 2020 01:04:21 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 33972-done Cc: 33972-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > I have to pre-check for an empty set before passing it to grep: > ... > Workaround: You're right that the empty pattern matches every line, since every line has an empty string in it somewhere. This is considered to be a feature of grep, not a bug. As you have a workaround I'm closing the bug report. From unknown Sun Aug 10 16:51:01 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 30 Jan 2020 12:24:08 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator