dsp@ptsfa.UUCP (David St. Pierre) (07/12/85)
Summary: sed 'p' function not consistent with s's 'p' flag on SV_R2 - 3B20 I was looking at Larry Wall's "newsgroups" to find out why it wasn't reporting on newsgroups which were still in my .newsrc but unsubscribed. After some testing I found that, in this particular context, -e s/aaa/bbb/ -e /bbb/p and -e s/aaa/bbb/p were not equivalent. Larry's sed scripts appear at the end of the article: both of them were terminated with a "-e d" function. Further testing revealed sed -e s/aaa//bbb/ -e /bbb/p -e d sed -n -e s/aaa/bbb/ -e /bbb/p -e d sed -n -e s/aaa/bbb/ -e /bbb/p sed -n -e s/aaa/bbb/p -e d sed -n -e s/aaa/bbb/p produced similar results, but sed -e s/aaa/bbb/p -e d would produce nothing. The manual page says that the 'p' function will "copy the pattern space to the standard output", while the 'p' flag "prints the pattern space if a replacement was made". I thought I understood the normal usage of the 'p' flag, but is the wording a subtle indication that the above example is in fact a feature? How does this example work on other systems? Also, is the "-n" flag a standard feature of sed? I thought it should be equivalent to a "-e d" as a final command string in all cases. ========================= abbreviated "newsgroups" cat $dotdir/.newsrc $dotdir/.newsrc $active | \ sed -e '/^options/d' \ -e '/^[ ]/d' \ -e '/^control/d' \ -e '/^to\./d' \ -e 's/^\([^ !:]*\)[ !:].*$/\1/' \ -e "/.*$1/p" \ -e 'd' | \ sort | uniq -u | $pager sed < $dotdir/.newsrc \ -e "/$1.*!/"'s/^\([^!]*\)!.*$/\1/p' \ -e 'd' | \ sort | $pager -- David St. Pierre {ihnp4,dual,qantel}!ptsfa!dsp