在两个字符串语句之间插入新字符串

INSERT NEW STRING BETWEEN TWO STRING STATEMENTS

我有许多格式为

的多行文本文件
222 333 444 _benny
300 400 500 _andrew
311 411 511 _reusee
322 433 544 _benny
500 500 600 _andrew

我需要从 _benny 到 _andrew 中取出字符串,并在它们之间插入一个带有 _yahoi 的字符串,这样输出就变成了

222 333 444 _benny
250 321 422 _yahoii
300 400 500 _andrew

我试过awk '/_benny/,/_andrew/' filename

但它只显示了文本

这个 awk 脚本

awk '/_benny/,/_andrew/ { if ( [=10=] ~ /_benny/ ) { print [=10=]; print "250 321 422 _yahoii"; next } { print } }' filename

将产生(假设)期望的结果

222 333 444 _benny
250 321 422 _yahoii
300 400 500 _andrew
322 433 544 _benny
250 321 422 _yahoii
500 500 600 _andrew

根据@ed-morton 的评论避免 /start/,/end/ 您也可以试试这个:

awk '{ if ( [=12=] ~ /_benny/ || [=12=] ~ /_andrew/ ) { if ( [=12=] ~ /_benny/ ) { print [=12=]; print "250 321 422 _yahoii"; next } { print } } }' filename