1 votes

Impossible de remplacer le chemin en utilisant sed

Comment puis-je remplacer un chemin par un autre chemin dans un fichier en utilisant la commande sed, Et quand il est utilisé comme variable dans script cela fonctionne.

sed -i "s/"system_filter = /etc/define_filter_file"/"system_filter = /usr/local/etc/file_regex"/g" /etc/exi.conf.bak

4voto

Khaled Points 35208

Vous devez échapper tous les slahs dans les chemins fournis et remplacer les guillemets ouvrants et finaux par des guillemets simples.

sed -i 's/"system_filter = \/etc\/define_filter_file"/"system_filter = \/usr\/local\/etc\/file_regex"/g' /etc/exi.conf.bak

La commande est exprimée comme suit :

sed -i 's/path1/path2/g'

Path1 et path2 ne peut pas clairement contient / car cela sera confondu avec l'expression entière.

4voto

snowdude Points 2790

Extrait du manuel infotex de GNU sed (voir info sed ):

La syntaxe du s (comme dans substitut) est s/REGEXP/REPLACEMENT/FLAGS . Le site / les caractères peuvent être uniformément remplacé par tout autre caractère unique 1 au sein d'un même s commande. Le site / (ou tout autre caractère utilisé à sa place) ne peut apparaître dans la REGEXP ou le REPLACEMENT que s'il est précédé d'un signe \ caractère.

c'est-à-dire utiliser | comme délimiteur entre le REGEXP et le remplacement et la commande sed devient :

sed -i 's|"system_filter = /etc/define_filter_file"|"system_filter = /usr/local/etc/file_regex"|g' /etc/exi.conf.bak

ou en bref :

sed s|/some/path|/alternate/path/|

ce qui est beaucoup plus facile que l'alternative, l'échappement d'un grand nombre de barres obliques :

sed s/\/some\/path/\/alternate\/path\//

1. (Le <code>sed</code> sous OSX exclut explicitement la barre oblique inversée (backslash). \ et les caractères de nouvelle ligne de la qualification ci-dessus de <em>"tout autre caractère unique" </em>)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X