1

files 内の 1 つの単語を別の単語に置き換えるスクリプト ファイルがあります。

これは私が使用するコードの一部です。現在、私が直面している問題は、Var1 と Var2 がパス名である場合です。私はシェル スクリプトを初めて使用します。前にエスケープ シーケンスを配置する必要があることはわかっています。var1 と var2 は csv ファイルから読み取られるためです。エスケープ シーケンスを手動で配置することはできません。このコマンドの前にある特殊文字を検出し、それらをエスケープ シーケンスに置き換える方法はありますか

$f はファイル名です

sed -i "s/$Var1/$Var2/g" "$f"
4

2 に答える 2

1

やあ、

ステートメントを区切るために別の文字を使用できます:

sed "s%PATTERN%PATTERN%"

コマンドの後にsedで最初に表示される文字は、パターンを区切るために使用されます。

あなたの例では、これは次のようになります。

sed -i "s%$Var1%$Var2%g" "$f"

次に$Var1$Var2保持することはできますが、保持することはでき/ません%。セパレータをパターンとして使用する必要がある場合は、。でエスケープする必要があります\

于 2012-09-20T13:51:49.313 に答える
0

次のように変数を引用できます。

sed -i 's@'"${Var1}"'@'"${Var2}"'@g' "${f}"

また、変数でパスについて言及したため、notice/は に置き換えられます。@

于 2012-09-20T13:44:40.157 に答える