Você pode omitir o OFS=" "
, mas o RS=""
(ou equivalente) é essencial para colocar o awk no modo de parágrafo .
Do manual GNU awk
, 4.8 Registros de várias linhas (outros tipos de comportamento se comportam de maneira semelhante, AFAIK):
Another technique is to have blank lines separate records. By a special dispensation, an empty string as the value of RS indicates that records are separated by one or more blank lines. When RS is set to the empty string, each record always ends at the first blank line encountered. The next record doesn’t start until the first nonblank line that follows. No matter how many blank lines appear in a row, they all act as one record separator. (Blank lines must be completely empty; lines that contain only whitespace do not count.)
Neste modo, os campos ainda são separados no espaço em branco por padrão, mas os espaços em branco agora incluem novas linhas (simples). O separador de campo saída padrão é um espaço único, portanto, tudo o que é necessário para transformar cada registro de várias linhas em uma única linha de campos separados por espaço é forçar awk
a reconstruir a variável de registro $0
, que é obtido como um efeito colateral da atribuição $1=$1
- veja por exemplo Famosos Awk One-Liners Explained, Parte II: Conversão de Texto e Substituição , 27. Exclua os espaços em branco iniciais e finais de cada linha (aparar).