Hi Ralph,

On 8/23/22 14:51, Ralph Corderoy wrote:
Hi Alejandro,

      ! groff -Tutf8 -man -ww longline.man |
      expand |
      grep '^.\{80\}.'

Ahh, I forgot about \{N\}, since I never use it.

Still, the Makefile uses pipefail, so I'm not sure how to make grep(1)
work for this.  If it works, it would be nice.

Move the inversion along the pipeline with a subshell.

     $ awk '{print FILENAME, length}' *
     79 79
     80 80
     81 81
     $
     $ set -o pipefail
     $ false | (! grep '^.\{80\}.' 79); echo $?
     1
     $ false | (! grep '^.\{80\}.' 80); echo $?
     1
     $ false | (! grep '^.\{80\}.' 81); echo $?
     
.................................................................................
     1
     $
     $ true | (! grep '^.\{80\}.' 79); echo $?
     0
     $ true | (! grep '^.\{80\}.' 80); echo $?
     0
     $ true | (! grep '^.\{80\}.' 81); echo $?
     
.................................................................................
     1
     $


I like it! And it's sh(1p)-compatible, so I like it more (even if the Makefile itself requires bash(1) for other reasons, mainly pipefail.

Thanks,

Alex

Reply via email to