Como remover uma nova linha desnecessária em uma string?

1

Eu quero converter o texto abaixo:

I am "Ritesh
"|"Sil"
I am "Ritesh
"|"Sil"
You are not "Ritesh
"|"Sil"

Em:

I am "Ritesh"|"Sil"
I am "Ritesh"|"Sil"
You are not "Ritesh"|"Sil"

Qual será o script de shell necessário para implementar isso? Nesse caso, em cada linha, haverá meu nome "Ritesh" | "Sil" , ou seja, esse é o único critério. Eu não quero que nenhuma nova linha seja inserida dentro do meu nome, como neste caso, há nova linha após "Ritesh

    
por Ritesh Sil 14.09.2017 / 12:42

2 respostas

2

Você pode usar o GNU sed .

sed -z 's/Ritesh\n/Ritesh/g' infile.txt

Para a sed se não tiver a opção -z .

sed '/Ritesh$/N;s/\n//' infile.txt

O sinalizador N que adiciona a linha de entrada N ext ao espaço padrão após um delimitador \n ewline quando a linha atual termina ....$ com Ritesh . em seguida, próximo pasrt do comando s/\n// remove esse delimitador.

    
por 14.09.2017 / 13:02
1

Supondo que você queira remover todas as novas novas linhas de um arquivo:

awk 'NR % 2 { line = $0; next } { printf("%s%s\n", line, $0) }' file.in

ou

paste -d '
sed -e N -e 's/\n//' file.in
' - - <file.in

ou com sed :

awk 'NR % 2 { line = $0; next } { printf("%s%s\n", line, $0) }' file.in
    
por 14.09.2017 / 13:17