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
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?
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
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
.
$ vi file
:g/^\$/-1j
:x
Ou seja. faça uma linha :join
nas linhas que precedem linhas de cifrão, depois salve e saia.