[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: New feature suggestion: "r" command to accept address zero
From: |
Jim Meyering |
Subject: |
Re: New feature suggestion: "r" command to accept address zero |
Date: |
Fri, 13 Aug 2021 12:39:10 +0200 |
On Wed, Aug 11, 2021 at 9:27 PM Assaf Gordon <assafgordon@gmail.com> wrote:
> I'd like to suggest a small feature:
>
> ====
> The 'r' command can be used with address zero, effectively prepending
>
> a file to the beginning of the input file, e.g.:
> sed '0rA.TXT' B.TXT > C.TXT
> is equivalent to:
> cat A.TXT B.TXT > C.TXT
>
> With "sed -i", this allows safe in-place prepending of files.
> A typical example would be adding a license header to multiple source
> files:
> sed -i '0rLICENSE' *.c *.h
> find -iname '*.cpp' | xargs sed -i '0rLICENSE'
>
> Current cumbersome alternatives are:
>
> sed -i -e 'x;${p;x};1rA.TXT' -e '1d' B.TXT
>
> sed -i '1ihello\nworld' B.TXT
>
> # Or converting a file to an embedded string
> # with "\n" then using "1i" :
> sed -i -e '1i\' -e "$(sed -z 's/\n/\\n/g' A.TXT)" B.txt
>
> =====
>
> With "-i" this addresses several of the difficulties in Pádraig's
> document: https://www.pixelbeat.org/docs/unix_file_replacement.html
>
> And also does not require shell scripting, something like:
> cat A.TXT B.TXT > C.TXT && MV C.TXT B.TXT
>
> I seem to remember talks about adding a generic coreutils program
> 'inplace', but until then, this could be a helpful alternative.
Hi Assaf,
I like the idea.
And the code. Nice work.
That all looks fine (of course modulo missing documentation).
Thank you!