2010-07-27 10 views
0

J'essaie d'utiliser sed pour réparer un fichier, et j'ai du mal à comprendre ce que je fais de mal. Toute indication sur la raison pour laquelle sed ne se comporte pas comme je l'espère serait appréciée.Remplacer par SED, essayer d'ajouter du contenu ne fonctionne pas

Mon fichier consiste en un groupe de lignes contenant chacune une seule valeur. Le contenu des valeurs n'est pas pertinent pour le remplacement, sauf qu'ils sont toujours alphanumériques et suivent un modèle. Je veux ajouter et ajouter ces valeurs avec d'autres données, afin de créer un fichier CSV.

faisant précéder, Sed fonctionne admirablement:

PREPEND (travaux)

sed 's/\(.*\)/NULL;0;400;6;2010-07-27;\1/' selection.csv

dans:

résultant

NULL;0;400;6;2010-07-27;1326GP11SCH 
NULL;0;400;6;2010-07-27;2312BB30DUM 

Ce qui est exactement comme je l'espérais.

Append (échoue)

Cependant, quand annexant, les choses deviennent laides:

sed 's/\(.*\)/\1 ;NULL;NULL;1/' selection.csv

Entraînant:

;NULL;NULL;1 
2312BB30DUM ;NULL;NULL;1 

La disparait de valeur à être-remplacé sur tout sauf la dernière ligne, ce qui est assez décourageant.

Il doit être quelque chose de tout à fait évident que je fais mal ici, mais je ne peux pas le comprendre.

(note: Je ne sais pas si tel est ou matériel SU ... ne hésitez pas à le déplacer vers SuperUser, si vous le pouvez et nous croyons qu'il devrait être là-bas)

Répondre

2

faire un dos2unix sur le premier fichier, alors utilisez sed

$ dos2unix file 
$ sed 's/$/;NULL;NULL;1/' file 
+0

Vous monsieur, sont géniaux. Merci beaucoup! Réponse acceptée et mise à jour – kander

Questions connexes