0

変数を検索して、ファイル内の絶対パスに置き換えたい。

setenv ABC /home/xyz
cat file.txt
${ABC}/Test/Folder_1
${ABC}/Test/Folder_2

${ABC} の出現箇所をすべて /home/xyz に置き換えたいと考えています。以下の方法で試してみましたが、うまくいきません。

sed -i 's/\$ABC/echo $ABC/g' file.txt

私は以下の方法で行うことができますが、私はこの方法をしたくありません.

$ echo $ABC | sed -i 's/\$ABC/\/home\/xyz/g' file.txt

この質問のヒントを教えてください。

ありがとうございました。

4

3 に答える 3

1

置換文字列で変数の値を本当に使用したい場合は、次を使用できます

sed "s#\${ABC}#$ABC#g" file.txt
于 2013-10-10T11:44:38.663 に答える
0

絶対パスを取得する別の方法は、readlink -f ${ABC}/Test/Folder_2

または、スラッシュに飢えたコマンドに代わる perl

$ echo $ABC | sed -i 's/\$ABC/\/home\/xyz/g' file.txt

だろう

$ echo $ABC | perl -p -i -e 's!\$ABC!/home/xyz!g'

上記の後の最初'sの文字は、置換式の区切り文字として使用されます (つまり's@foo@bar@g')

于 2013-10-11T11:45:25.140 に答える