2009-07-27 4 views

risposta

17

È necessario utilizzare un carattere diverso, invece di /, ad es .:

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

perché / appare nel pwd uscita.

+0

molto interessante, mi chiedevo cosa significasse l'errore. ottimo lavoro –

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

Il problema è uno di sfuggire correttamente l'uscita di pwd. Fortunatamente, come in vim, sed supporta con un diverso carattere delimitatore. In questo caso, l'uso dei due punti anziché della barra come delimitatore evita il problema di escape.

1

invece di armeggiare intorno con le citazioni del genere, si può fare in questo modo

#!/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 semplicemente bash

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

stavo cercando di fare qualcosa di simile, questo mi ha aiutato ... L'ho usato così: 'project_dir = $ {current_dir/\/f1 \/f2 //}' Volevo il percorso di 2 cartelle in su . – Shrinath

2

in sed, non è possibile utilizzare/direttamente, è necessario utilizzare '/'.

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