2009-07-27 16 views

Respuesta

17

Es necesario utilizar un carácter diferente en lugar de /, por ejemplo .:

sed 's?#REPLACE-WITH-PATH?'`pwd`'?' 

porque / aparece en la salida pwd.

+0

muy interesante, me preguntaba qué significaba el error. buen trabajo –

1
sed 's:#REPLACE-WITH-PATH:'`pwd`':' config.ini 

El problema es que se escapó correctamente la salida de pwd. Afortunadamente, como en vim, sed admite el uso de un carácter delimitador diferente. En este caso, usar los dos puntos en lugar de la barra como delimitador evita el problema de escape.

1

en lugar de buscar a tientas con citas como esa, puede hacerlo de esta manera

#!/bin/bash 
p=`pwd` 
# pass the variable p to awk 
awk -v p="$p" '$0~p{ gsub("REPLACE-WITH-PATH",p) }1' file >temp 
mv temp file 

o simplemente fiesta

p=`pwd` 
while read line 
do 
    line=${line/REPLACE-WITH-PATH/$p} 
    echo $line  
done <file> temp 
mv temp file 
+0

Estaba tratando de hacer algo similar, esto me ayudó ... Lo usé así: 'dir_del_proyecto = $ {actual_dir/\/f1 \/f2 //}' Quería que la ruta para 2 carpetas fuera . – Shrinath

2

en SED, no se puede usar/directamente, debe utilizar '/'.

#!/bin/bash 
    dir=$`pwd`/ 
    ls -1 | sed "s/^/${dir//\//\\/}/g" 
Cuestiones relacionadas