GNU sed
, Sim, tem essa opção para substituir todas as g
ocorrências de um patten ou da Xth ocorrência para todas depois de gX
, mas você pode usar essas duas extensões para obter apenas o que deseja substituir primeiro Y ocorrências como abaixo para substituir as primeiras 3 ocorrências de PATTERN.
sed -E 's/PATTERN/TEMP-REPLACE/g4; s/PATTERN/REPLACE/g; s/TEMP-REPLACE/PATYERN/g' infile.txt
Também como solução não-GNU, você pode ter Y sed
parts para substituir Y vezes de um PATTERN como abaixo,
sed -E -e 's/PATTERN/REPLACE/' -e 's/PATTERN/REPLACE/' -e 's/PATTERN/REPLACE/'
Resposta atualizada como pergunta revisada
Você pode usar awk
com a definição de dois sinalizadores de controle para START e END e faça o seguinte:
awk -v START=1 -v END=5 '{for (i=START;i<=END;i++) gsub(/PATTERN/,"****",$i)}1' infile.txt
por favor note que por padrão awk
considerando ler arquivos delimitados por aba ou espaço , se a sua for diferente ou quiser informar o awk é por exemplo ,
, você pode definir com sua opção -F','
.