2012-03-23 3 views
1

Je veux rechercher un motif et ajouter à cela dans un fichier.trouver patern et ajouter et le remplacer dans le fichier

Pour être précis voici un exemple de mon modèle et il y a des centaines dans un fichier.

  <size>30</size> needs to be replaced with <size>30,-1</size> 

Mais le nombre en place de 30 est une variable (il peut être un nombre 0-99)

Je suis nouveau à sed mais j'ai utilisé sed avec des motifs connus, mais ne sais pas comment modifier lorsqu'il y a une variable dans le motif.

aussi je vis un échantillon où le code est placé dans le fichier .sed

 for example: sed replace.sed datafile.xyz > new.xyz 

comment puis-je y parvenir?

Merci

Répondre

2

Avec sed vous pouvez stocker une partie du texte correspondant avec des parenthèses et l'inclure dans le remplacement:

http://www.grymoire.com/Unix/Sed.html#uh-4

Ainsi, par exemple:

sed 's:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g' ... 
+0

Merci ... qui m'a sauvé beaucoup de travail manuel –

+0

si u wanna correspondance d'une ligne, mais sur un autre remplaçant? – sloven

0

. .. et sur la lecture des commandes sed à partir d'un fichier:

s:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g 

et l'appeler:

sed -f commands.sed file.html 

Si vous avez plusieurs commandes, mettez chacun dans sa propre ligne.

0

Je sais que cela n'a pas été étiqueté sous perl alors n'hésitez pas à l'ignorer. Mais avec perl's positive look-ahead et look-behind vous pouvez faire quelque chose comme ça -

perl -pe 's/(?<=\<size\>)([0-9]{2})(?=\<\/size\>)/$1,-1/' yourfile 
Questions connexes