GNU bug report logs - #25587
In -i mode, shouldn't sed continue processing the command line if it can't access some files?

Previous Next

Package: sed;

Reported by: Zack Weinberg <zackw <at> panix.com>

Date: Tue, 31 Jan 2017 15:13:02 UTC

Severity: normal

Tags: notabug

Done: Assaf Gordon <assafgordon <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 25587 <at> debbugs.gnu.org (full text, mbox):

From: Norihiro Tanaka <noritnk <at> kcn.ne.jp>
To: Zack Weinberg <zackw <at> panix.com>
Cc: 25587 <at> debbugs.gnu.org
Subject: Re: bug#25587: In -i mode,
 shouldn't sed continue processing the command line if it can't access
 some files?
Date: Wed, 01 Feb 2017 08:51:59 +0900
On Tue, 31 Jan 2017 10:12:34 -0500
Zack Weinberg <zackw <at> panix.com> wrote:

> Consider
> 
> $ mkdir test
> $ cd test
> $ printf 'foo\nbar\n' > a
> $ mkdir b
> $ printf 'foo\nbar\n' > c
> $ sed -i '$d' *
> sed: couldn't edit b: not a regular file
> $ ls -l
> -rw-r--r-- 1 zack zack    4 Jan 31 10:06 a
> drwxr-xr-x 2 zack zack 4096 Jan 31 10:06 b
> -rw-r--r-- 1 zack zack    8 Jan 31 10:06 c
> 
> I find this behavior surprising.  In -i mode, I think sed should go on
> to process 'c' even though it failed to process 'b'.
> 
> $ sed --version | sed 1q
> sed (GNU sed) 4.3
> 
> zw

perl works as you say, but I seem that it is designed.

$ rm -rf *
$ echo 1 >a
$ mkdir b
$ echo 1 >c
$ sed -i 's/1/2/' *
sed: couldn't edit b: not a regular file
$ cat a c
2
1

$ rm -rf *
$ echo 1 >a
$ mkdir b
$ echo 1 >c
$ perl -pi -e 's/1/2/' *
Can't do inplace edit: b is not a regular file, <> line 1.
$ cat a c
2
2

grep skips errors, and gawk stops at error.
i.e. the behavior is different between commands.

$ echo 1 > a
$ echo 1 > c
$ grep 1 *
a:1
grep: b: Is a directory
c:1
$ awk '{print $1}' *
1
awk: (FILENAME=a FNR=1) fatal: cannot open file `b' for reading (Success)





This bug report was last modified 6 years and 227 days ago.

Previous Next


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