2013-02-24 6 views
0

Je suis en train de remplacerligne de commande Rechercher et remplacer

</url></loc> 

avec

</loc></url> 

dans tous mes fichiers, mais rien ne semble fonctionner. Existe-t-il un moyen de le faire via une ligne de commande, perl, etc.? Toute aide serait grandement appréciée.

Répondre

3

Check out sed:

sed -i 's|</url></loc>|</loc></url>|g' <filenames> 
1

Utilisation sed:

sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' yourfiles.* 

Pour remplacer d'autres tags:

sed -E -i 's/<\/(url|what|ever)><\/(loc|any|other)>/<\/\2><\/\1>/g' yourfiles.* 
4

Notez que de nombreuses versions de sed ne reconnaissent pas -i. Mais vous pouvez faire exactement la même chose avec perl:

find . -exec perl -i -pe 's|(</url>)(</loc>)|$2$1|g' {} \; 

Perl a un grand avantage sur sed en ce sens qu'il sera beaucoup plus facile d'étendre cette inclure les occurrences des deux balises qui sont réparties sur plusieurs lignes.

perl -0777 -i -pe 's|(</url>)(\s*)(</loc>)|$3$2$1|g' 
0
find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';' 
Questions connexes