Como adicionar "espaçamento duplo entre linhas" a qualquer saída?

Como adicionar "espaçamento duplo entre linhas" a qualquer saída?

Gostaria de pegar a saída de um comando bash (neste caso, grep) e inserir uma linha em branco a cada duas linhas:

not
like
this ...

but

like

this!

Maneira inteligente de fazer isso no bash?

Responder1

Existem muitas maneiras de fazer isso para arquivos de texto. O mais simples é provavelmente

$ sed G filename

Responder2

Usando prde coreutils:

$ grep '' file | pr -Td
not

like

this ...

(observe que issofazespaço duplo na linha final - ao contrário, digamos, de sed '$!G'). De man pr:

   -d, --double-space
          double space the output

   -T, --omit-pagination
          omit page headers and trailers, eliminate any pagination by form
          feeds set in input files

Responder3

Começando com um arquivo como:

$ cat >file
not
like
this ...

sed funcionará:

$ sed 's/$/\n/' file
not

like

this ...

Então vai perguntar:

$ awk 1 ORS='\n\n' file
not

like

this ...

1é a abreviação enigmática do awk para imprimir a linha e ORS='\n\n'diz ao awk para separar as linhas de saída não com apenas uma, mas com duas novas linhas.

Mais

Um comando sed mais curto, conforme sugerido porchave de aço, é:

sed '$!G' file

O Gcomando anexa uma nova linha e omantenha espaçoaté o final doespaço padrão. Como, por padrão, o espaço de espera está vazio, isso tem o efeito de apenas adicionar uma nova linha extra no final de cada linha. O prefixo $!diz ao sed para fazer isso em todas as linhasexcetoo último.

Responder4

Test
10
20
30

Output
perl -pe "s/$/\n/" test 
10

20

30

informação relacionada