$ 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.
-
11é 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.