2011-02-11 8 views
1

J'essaye d'ajouter un tas de 0 à la fin d'une ligne. La façon dont la ligne est identifiée est qu'il est suivi par une ligne qui commence par « expr1 »sed remplace la fin de ligne

dans vim ce que je fais est:

s/\nexpr1/ 0 0 0 0 0 0\rexpr1/ 

et il fonctionne très bien. Je sais que dans ubuntu \ n est ce qui est normalement utilisé pour terminer la ligne, mais chaque fois que je fais cela, je reçois un symbole^@ donc ça marche très bien pour moi. Je pensais utiliser ça avec sed mais ça n'a pas vraiment marché. voici ce que j'écris normalement:

sed "s/\nexpr1/ 0 0 0 0 0 0\rexpr1/" infile > outfile 

Répondre

3

Le marqueur de fin de ligne est $. Essayez ceci:

s/$/ 0 0 0 0 0 0/ 

Selon votre environnement, vous devrez peut-être échapper le $.

0
awk '{$0=$0" 0 0 0 0 0 "}1' file > tmp && mv tmp file 

ruby -i.bak -ne '$_=$_.chomp!+" 0 0 0 0 0\n";print' file 
0
awk '$(NF + 1) = " 0 0 0 0 0 0"' infile > outfile 
+0

créer un autre champ affecte la variable FS. Un fichier avec des tabulations comme délimiteur par exemple, deviendra de l'espace. Une solution de contournement pour ce phénomène consiste à spécifier un délimiteur de champ qui est peu susceptible d'apparaître dans le fichier par exemple -F "@ # @ #" – kurumi

Questions connexes