Como eu removo o caractere de nova linha das linhas que precedem um padrão específico?

0

Eu tenho um arquivo como este:

1
22
1
4
$3
3
5556
$33
$233
$1
5

Eu quero mover todas as linhas começando com $ para a linha anterior, substituindo os caracteres de nova linha por um espaço. Meu resultado deve ser algo como:

1
22
1
4 $3
3
5556 $33 $233 $1
5

Como posso fazer isso usando sed, grep ou awk?

    
por user110327 01.12.2016 / 11:44

3 respostas

2

Uma pergunta semelhante é postada aqui: Comando SED para formatar arquivo de texto

Como o comentário de Stéphane sugere que a solução para sua pergunta usando sed seria a seguinte:

sed -e :a -e '$!N;s/\n\$/ $/;ta' -e 'P;D' filename
    
por 01.12.2016 / 12:04
0

Tente isto:

awk 'BEGIN {ORS = " "} {print}' file | sed 's/\( \)\([0-9]\)/\n/g'

awk altera a coluna para uma linha definindo o Separador do campo de saída para um espaço, enquanto sed encontra o padrão space+number e o substitui por um padrão newline+number .

    
por 02.12.2016 / 17:04
0
$ vi file
:g/^\$/-1j
:x

Ou seja. faça uma linha :join nas linhas que precedem linhas de cifrão, depois salve e saia.

    
por 09.12.2016 / 16:55