Enquanto sed pode ser usado para isso, qualquer coisa que envolva contagem é geralmente mais fácil com awk .
Vamos considerar este arquivo de teste:
$ cat file1
GROUP DIRECTORY CATEGORIES
datadata
Grouping Cat
datadata
datadata
Above is 3rd blank line
Para adicionar um ,; à terceira linha em branco após GROUP DIRECTORY CATEGORIES :
$ awk '/GROUP DIRECTORY CATEGORIES/{f=1} f && /^$/ {f++; if (f==4) $0=",;"} 1' file1
GROUP DIRECTORY CATEGORIES
datadata
Grouping Cat
datadata
datadata
,;
Above is 3rd blank line
Como funciona:
-
/GROUP DIRECTORY CATEGORIES/{f=1}Sempre que for encontrada uma linha que corresponda à regex
GROUP DIRECTORY CATEGORIES, a variávelfserá definida como 1. -
f && /^$/ {f++; if (f==4) $0=",;"}Se
ffor diferente de zero e a linha atual estiver em branco,/^$/, então incrementefem um. Seffor 4, substitua a linha em branco atual por,;. -
11é a abreviatura enigmática do awk para imprimir na linha.