在两个字符串语句之间插入新字符串
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
我有许多格式为
的多行文本文件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