Usar sed para adicionar caracteres no final de uma linha adiciona uma nova linha

1

Estou fazendo um script para converter algumas listas de deck de Magic de um formato para outro. Eu preciso inserir o código do conjunto para cada cartão no final da linha em que está. Meu código é:

sed -i "$line_number""s/$/""|""$set_code"/ "$deck_file"

Onde $line_number é uma linha no arquivo, $set_code é o texto a ser adicionado e $deck_file é um arquivo que estou editando, todos já definidos no código.

O que eu quero que essa linha faça é:

1 Acidic Slime

e transforme-o em

1 Acidic Slime|M13

Mas, em vez disso, adiciona uma nova linha e gera

1 Acidic Slime
|M13

No arquivo. Qualquer ajuda é apreciada, tenho certeza de que estou perdendo algo em sed . Estou aberto a usar o awk ou qualquer outro comando, não precisa ser sed .

    
por j_solo 30.03.2018 / 20:48

1 resposta

1

O problema era um caractere \r no final de cada linha que eu não conhecia. Isso faz com que o cursor retorne ao início da linha. Eu notei isso tentando ecoar "$cardname""|""$set_code" qual saída

|M13idic Slime
    
por j_solo 31.03.2018 / 02:56