Como pode adicionar “espaçamento de linha dupla” a qualquer saída? [duplicado]

0

Eu gostaria de pegar a saída de um comando bash (neste caso, grep) e inserir uma linha em branco a cada outra linha:

not
like
this ...

but

like

this!

Uma maneira inteligente de fazer isso no bash?

    
por PetaspeedBeaver 23.11.2017 / 02:30

5 respostas

4

Usando pr de coreutils :

$ grep '' file | pr -Td
not

like

this ...

(note que isso faz espaço duplo na linha final - diferente, digamos, 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
    
por 23.11.2017 / 03:10
4

Existem várias maneiras de fazer isso para arquivos de texto. O mais simples é provavelmente

$ sed G filename
    
por 23.11.2017 / 02:38
3

Começando com um arquivo como:

$ cat >file
not
like
this ...

sed funcionará:

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

like

this ...

Então vai awk:

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

like

this ...

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

Mais

Um comando sed mais curto, conforme sugerido por steeldriver , é:

sed '$!G' file

O comando G acrescenta uma nova linha e o espaço de espera ao final do espaç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 linhas exceto a última.

    
por 23.11.2017 / 02:34
1

Outra versão do awk:

| awk '{print $0, "\n"}'
    
por 23.11.2017 / 02:42
-1
Test
10
20
30

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

20

30
    
por 23.11.2017 / 03:18

Tags