$ awk '/SETTINGS START/,/SETTINGS END/ {if (FNR==NR) {a=a"\n"$0}} FNR==NR{next} /SETTINGS START/{print substr(a,2)} /SETTINGS START/,/CUSTOMIZATION SETTINGS END/{next} 1' file2 file1
ANJALI NISHA
// +++ CUSTOMIZATION SETTINGS START +++
WELCOME ALL
// +++ CUSTOMIZATION SETTINGS END +++
PREETI MONA
Explicação
awk
implicitamente percorre os arquivos linha por linha. Neste caso, temos que passar pelo arquivo2 primeiro, depois pelo arquivo1.
-
/SETTINGS START/,/SETTINGS END/ {if (FNR==NR) {a=a"\n"$0}}
A seção de configurações do arquivo2 é capturada na variável
a
. -
FNR==NR{next}
Se ainda estivermos lendo o arquivo2, pule o resto dos comandos e pule para a próxima linha de entrada.
-
/SETTINGS START/{print substr(a,2)}
Se chegarmos aqui, estamos processando o arquivo1. Quando virmos o início da seção de configurações, imprima a string que salvamos na variável
a
. -
/SETTINGS START/,/CUSTOMIZATION SETTINGS END/{next}
Se estivermos na seção de configurações do arquivo1, pule o restante dos comandos e vá para a próxima linha de entrada.
-
1
1
é a abreviação abreviada de awk para imprimir a linha atual. Nós só chegamos a esta declaração se estamos no arquivo1, mas não na seção de configurações.