awk ' FNR==NR && /descriptor2/{f=1} FNR==NR && /descriptor4/{f=0} FNR==NR && f{arr[++i]=$0} FNR==NR{next} /descriptor2/{for(j=1;j<=i;j++){print arr[j]};f=1} /descriptor4/{f=0} !f{print} ' "file1" "file2"