Re: Differences between q and Q

"Thierry Blanc [email protected] [sed-users]" <[email protected]>
Newsgroups gmane.editors.sed.user
Message-ID <[email protected]>
Personally, I would welcome a hint that Q and q affect 'a' and 'i'
commands. At least the new user will not immediately make the connection.



On 10/05/15 07:07, Daniel Goldman [email protected] [sed-users] wrote:
> Tim,
>
> Thanks for replying. But I think you mostly misinterpreted my post.
>
> I quoted from the GNU sed manual, suggesting a rewording of the manual 
> text, so I think it was clear the post related to GNU sed, not other 
> versions of sed. Obviously, since I'm asking about Q, the post only 
> applies to sed versions with Q command (likely just GNU).
>
> I didn't ask about the behavior of i and a, and don't have any confusion 
> about them. I just used them as examples to show the different behavior 
> of q and Q under GNU sed. Again, q prints scheduled output, Q doesn't. 
> The manual fails to document that. I'm just pointing that out, 
> suggesting it gets fixed, wondering if anything I've missed.
>
> All praiseworthy humor aside, refraining from using arR does not 
> "suppress" scheduled output, since the output was never scheduled. It's 
> not that I "don't want scheduled output", I never suggested that. A 
> better (but equivalent) wording would have been "Q is the only command 
> that suppresses scheduled output". It's a simple factual statement that 
> is either true (to my understanding) or false (if I missed something).
>
> Again, to repeat, the purpose of my post (based on emails I received) 
> was to suggest that the GNU sed manual be corrected to read "Note that 
> the current pattern space is printed if auto-print is not disabled with 
> the -n options. Also, scheduled text is printed." for q, and "This 
> command is the same as q, but will not print the contents of pattern 
> space, nor any scheduled text." for Q. If anyone has comments on this 
> admittedly minor correction, that would be great. If no comments, that's 
> OK too. :)
>
> Daniel
>
> On 5/8/2015 2:41 PM, Tim Chase [email protected] [sed-users] wrote:
>> On 2015-05-07 20:22, [email protected] [sed-users] wrote:
>>> Concerning q (lower), the GNU sed manual says: Exit sed without
>>> processing any more commands or input. Note that the current
>>> pattern space is printed if auto-print is not disabled with the -n
>>> options.
>>>
>>> Concerning Q (upper), it says: This command is the same as q, but
>>> will not print the contents of pattern space.
>> Just for the record, I believe that "Q" is a GNU extension.  Testing
>> on FreeBSD and OpenBSD shows it doesn't support "Q".  Also, GNU's
>> "az" or "ix" syntax are an extension which should be written
>> as
>>
>>    sed -e 'i\
>>    x' -e 'a\
>>    z' -q
>>
>> if you're taking portability into consideration.
>>
>>> $ echo y | sed -e ix -e az -e q
>>> x
>>> y
>>> z
>>>
>>> $ echo y | sed -e ix -e az -e Q
>>> x
>>>
>>> q prints scheduled text (in this case, from a). Q does not. So the
>>> documentation seems incorrect, or at least incomplete. I would
>>> suggest q might say something like "Note that the current pattern
>>> space is printed if auto-print is not disabled with the -n options.
>>> Also, scheduled text is printed." and Q "This command is the same
>>> as q, but will not print the contents of pattern space, nor any
>>> scheduled text." Is original definition better, expanded
>>> definition, or something else? Any other comments?
>> The documentation ("info sed" for GNU's annoying info(1)
>> documentation instead of proper man-page documentation</rant>) does
>> detail that "a" enqueues for future printing, while "i" prints
>> immediately:
>>
>>
>> `a\'
>> `TEXT'
>>       Queue the lines of text which follow this command (each but the
>>       last ending with a `\', which are removed from the output) to be
>>       output at the end of the current cycle, or when the next input
>>       line is read.
>>
>> `i\'
>> `TEXT'
>>
>>       Immediately output the lines of text which follow this command
>>       (each but the last ending with a `\', which are removed from the
>>       output).
>>
>> So I would expect the behavior you see:  "i" immediately outputs the
>> "x", then the "Q" interrupts the printing of the "y" from stdin, and
>> the "z" from the "a" command.
>>
>>> Also, it seems Q is the only way to suppress scheduled output (from
>>> arR). Is that correct?
>> Well, that and simply refraining from scheduling output that you
>> don't want.  Sounds like the old
>>
>>    Patient: Doctor, it hurts when I press here!
>>    Doctor: Well, don't press there.
>>
>> only with
>>
>>    User: I can't suppress scheduled output unless I use Q!
>>    Sed: Well, don't schedule output.
>>
>> :-)
>>
>> -tkc
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> ------------------------------------
>> Posted by: Tim Chase <[email protected]>
>> ------------------------------------
>>
>
> ------------------------------------
> Posted by: Daniel Goldman <[email protected]>
> ------------------------------------
>



------------------------------------

------------------------------------

-- 

------------------------------------

Yahoo Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/sed-users/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/sed-users/join
    (Yahoo! ID required)

<*> To change settings via email:
    [email protected] 
    [email protected]

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo Groups is subject to:
    https://info.yahoo.com/legal/us/yahoo/utos/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.