o script verifica se o registro é "a" e configura a variável para apontar para a linha atual. Em seguida, verifica se a linha de registro atual menos a linha armazenada anterior é igual a 3 e imprime a string e, em seguida, imprime a linha atual
Você pode usar o editor de script edpara isso: insira globalmente ztrês linhas após corresponder /a/:
$ ed -s input-file
g/a/+3i\
z
wq
ou, como uma linha:
printf '%s\n' 'g/a/+3i\' 'z' 'wq' | ed -s input-file
Os edcomandos são:
g/a/+3i\-- executa globalmente o comando subsequente, que é: três linhas após corresponder /a/, insere algum texto. A barra invertida final continua o comando de inserção para a próxima linha.
z-- insira o texto z. Sem uma barra invertida final, o comando insert termina, completando a execução global.
Algo como pode fazer o trabalho:
o script verifica se o registro é "a" e configura a variável para apontar para a linha atual. Em seguida, verifica se a linha de registro atual menos a linha armazenada anterior é igual a 3 e imprime a string e, em seguida, imprime a linha atual
ou
sed
inserir/anexar :Você pode usar o editor de script
ed
para isso: insira globalmentez
três linhas após corresponder/a/
:ou, como uma linha:
Os
ed
comandos são:g/a/+3i\
-- executa globalmente o comando subsequente, que é: três linhas após corresponder /a/, insere algum texto. A barra invertida final continua o comando de inserção para a próxima linha.z
-- insira o textoz
. Sem uma barra invertida final, o comando insert termina, completando a execução global.wq
-- grava o arquivo de volta no disco e sai.