On Tue, 20 Dec 2022 at 22:04, David <bouncingc...@gmail.com> wrote: > On Tue, 20 Dec 2022 at 22:02, David <bouncingc...@gmail.com> wrote:
> > $ echo -e '100:CD001\n200:CD001' | awk 'BEGIN { FS=":" } /CD001/ && > > NR==1 { print $1 - 50 }' > > 50 > > Oops, my mistake, that's not the solution. Give me another minute and I > will post a better one one. The below does a better job: (command should be all on one line) $ echo -e '100:CD001\nXXX\n200:CD001' | awk 'BEGIN { FS=":" ; done=0 } /CD001/ && done==0 { print $1 - 50 ; done=1 }' 50 Still quite clean and obvious for a one liner (for folks who know how 'awk' works), and it will be significantly faster than pipelines and subshell collections. Not that that is always important. But I just commented today because so often 'awk' is ignored as if its only capability is 'print $1' when in fact it is actually very powerful but neglected.