Sim, você pode usar sed para trocar linhas:
$ sed -E 'N;N;s/\n([^\n]*)\n([^\n]*)/ /' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
Ou, de forma equivalente:
$ sed 'N;N;s/\n\([^\n]*\)\n\([^\n]*\)/ /g' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
Como funciona:
-
-E
Isso ativa expressões regulares estendidas. (
-E
funciona tanto no BSD (OSX) sed quanto no moderno GNU sed. Para versões mais antigas do GNU sed, use-r
).Sem regex estendido, precisamos escapar de
(
e)
conforme mostrado acima. -
N;N
Isto lê as segunda e terceira linhas.
-
s/\n([^\n]*)\n([^\n]*)/ /
Isso troca a segunda e terceira linhas. A primeira ocorrência de
\n([^\n]*)
captura a segunda linha e a salva no grupo de captura 1. A segunda ocorrência de\n([^\n]*)
captura a terceira linha e a salva no grupo de captura 2. O texto de substituição,
Removendo algum excesso de espaço em branco
A segunda e terceira linhas são recuadas no arquivo de entrada. Se quisermos remover esse espaço em branco extra:
$ sed -E 'N;N;s/\n[[:blank:]]*([^\n]*)\n[[:blank:]]*([^\n]*)/ /g' file
Object Name: A manual_encdomain: Name: A comments: comment A
Object Name: B manual_encdomain: Name: B comments: comment B
[[:blank:]]
é a maneira segura de unicode para corresponder espaços em branco e tabulações.