Luckily plan9 is not POSIX and actually sed does not really add a newline 
character, it just puts a newline to the end of each pattern buffer, that is 
done line-wise anyway. Also sed's little brother ed behaves the same, which 
makes the behaviour even more convenient 

term% echo -n 'abc' > inp
term% cat inp
abcterm% ed inp
'\n' appended
4
wq
4
term%

And that is even consistent with (POSIX?) ed on linux systems or anywhere else.

There is a very good reason to do so: The rule just applies to the 
end-of-input! So when you output a pattern from the sed buffer, you would need 
to check each time if we are at the end or not and add the newline or not, if 
it has been there or not. All those branches for just one character at the end 
of the input that can be easily removed if you really don't want it.

So for simplicity there are very good reasons to state that any output from sed 
will end in a newline, even if the input doesn't.

If you seek for a sed like thing that does not work line oriented, use ssam, as 
sam and the streamed version ssam, process input in another way, that is not 
line oriented.

cheers
ingo

> On Wed, Aug 12, 2015 at 09:57:18AM +0200, Rudolf Sykora wrote:
>> On 12 August 2015 at 09:48, Ingo Krabbe <ikrabbe....@gmail.com> wrote:
>> 
>> > Actually sed is a line based command and should add a newline, imho.
>> 
>> I don't think it should add anything. For itself it should be able to count
>> newlines (because of the possible use of addresses), but otherwise it
>> should not do anything extra (it should be possible to pipe through
>> two seds, for instance).
>> 



Reply via email to