3

わかりました、これは簡単な質問ですが、この sed コマンドを機能させることができないようです。テキスト ファイルを取得し、その一部をプレースホルダー テキストから学習コードに置き換えようとしています。それを置き換える研究コードは、スクリプトが最初に実行されるときに、引数を使用してスクリプトに渡されます。問題は、プレースホルダー テキストを変数 $study に置き換えようとすると、文字通り「$study」に置き換えられることです。

現在、私の引数は次のように設定されています。

調査のエクスポート=$1

輸出タグ=$2

エクスポートモード=$3

export select=$4

私の sed コマンドは次のようになります。

sed -i.backup -e 's/thisisthestudycodereplacethiswiththestudycode/$study/' freq.spx

リテラルの $study を見ないように sed を取得する簡単な方法はありますか、それともこの時点で別の方法で行う方がよいでしょうか?

4

3 に答える 3

15

一重引用符の代わりに二重引用符を使用してください。

'引用はシェル変数の展開を防ぎますが、"引用はしないためです。

于 2009-05-12T18:37:10.457 に答える
1

おそらくこの問題に遭遇することはありませんが、念のため...

$studyに特別な意味を持つスラッシュやその他の文字が含まれている可能性がある場合、ポールの答えはわずかに最適ではありませんsed

mv freq.spx freq.spx.backup && \
    awk -v "study=$study" '{
        gsub(/thisisthestudycodereplacethiswiththestudycode/, study);
        print;
    }' freq.spx.backup > freq.spx

ぎこちない (しゃれ!) ですが、これは$studyの内容に関係なく常に機能します。

于 2009-05-12T21:00:34.887 に答える
0

これを試してみてください........ " これは実際に置き換えられ、"a" には置き換える文字列があります。

于 2013-06-11T05:34:57.473 に答える