sed -e :a -e '$!N;s/^\(REF\*CE.*\)\n\(REF\*1W.*\)/\n/;ta' -e 'P;D' <testfile.txt
- Se não estivermos na última linha, anexe a próxima linha.
- Faça uma substituição na linha atual que só ocorre se corresponder a
substring containing pattern 1 + newline + substring containing pattern 2
. A substituição inverte as duas subcordas. Após a substituição, volte ao rótulo: a. - Se não houver correspondência Imprima o espaço padrão como está. Em seguida, exclua o espaço do padrão e inicie o ciclo novamente.
Amostra com algumas linhas adjacentes ...
In:
XEF*CE*-------------------------
REF*CE*-------------------------
REF*1W*-------------------------
REF*2W*-------------------------
Out:
XEF*CE*-------------------------
REF*1W*-------------------------
REF*CE*-------------------------
REF*2W*-------------------------
Mais geralmente para qualquer pattern1 e pattern2
sed -e :a \
-e "\$!N; s/^\(.*${pattern1}.*\)\n\(.*${pattern2}.*\)/\n/;ta" \
-e 'P;D' < inputfile