Comando Bash para dividir uma linha de texto em 2 linhas [closed]

1

Eu quero esta linha de um arquivo de texto

This is to become line 1 and that is line 2

Para dividir em duas linhas, assim:

This is to become line 1
and that is line 2

Note que não quero editar / recortar / remover nada, nem um único caractere, só quero terminar com duas linhas de texto em vez de uma, e ser capaz de decidir onde a divisão deve ocorrer . Como posso usar sed ou awk ou split para fazer isso? Não importa qual deles eu uso, mas eu prefiro sed , se possível ...

    
por DoruMint 23.09.2016 / 13:52

2 respostas

1

Bem, isso funcionará se você estiver tentando dividir a linha com a palavra "e".

echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g' 
This is to become line 1 
and that is line 2

Por favor, note que sua milhagem pode variar dependendo de qual versão sed você está usando.

ATUALIZAÇÃO:

Para obter a divisão, basta adicionar o "\ n" na frente do termo / elemento que você deseja usar como o início da segunda linha.

echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/'
Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> 
Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> 
    
por 23.09.2016 / 14:06
0

Eu adiciono minha implementação pessoal usando awk , de forma que você possa alterar o separator como quiser.

echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'

Eu sempre prefiro usar awk por causa da possibilidade de usar variáveis com facilidade. Se você quiser dividir sua linha baseando-se em outros separadores , basta alterar o valor de separator para outro.

Se você quiser cortar o separator da segunda linha (quero dizer, você não quer ler " e linha 2 ", mas apenas " linha 2 "):

echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'
    
por 23.09.2016 / 16:16