web-dev-qa-db-fra.com

L'utilisation de sed pour ajouter des caractères à la fin d'une ligne ajoute une nouvelle ligne

Je suis en train de faire un script pour convertir certaines listes de deck Magic d'un format à un autre. Je dois insérer le code correspondant à chaque carte à la fin de la ligne sur laquelle il est allumé. Mon code est:

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

$line_number est une ligne du fichier, $set_code est un texte à ajouter et $deck_file est un fichier que je suis en train de modifier, tous déjà définis dans le code.

Ce que je veux que cette ligne à faire est de prendre:

1 Acidic Slime

et le transformer en

1 Acidic Slime|M13

Mais au lieu de cela, il ajoute une nouvelle ligne et des sorties

1 Acidic Slime
|M13

Dans le fichier. Toute aide est appréciée, je suis sûr que quelque chose manque dans sed. Je suis ouvert à l'utilisation de awk ou de toute autre commande, il n'est pas nécessaire que ce soit sed.

1
j_solo

Le problème était un \r à la fin de chaque ligne que je ne connaissais pas. Cela ramène le curseur au début de la ligne. J'ai remarqué cela en essayant de faire écho à "$cardname""|""$set_code" quelle sortie

|M13idic Slime
1
j_solo