29

テキスト ファイル内のsed文字を含む文字列を検索および置換する方法がわかりません。//etc/myconfig

たとえば、私の既存のテキスト ファイルには、次のものがあります。

myparam /path/to/a argB=/path/to/B xo

そして、これを次のものに置き換えたい:

myparam /path/to/c argB=/path/to/D xo

私はbashでこれをやろうとしました:

line='myparam /path/to/a argB=/path/to/B xo'
line_new='myparam /path/to/c argB=/path/to/D xo'
sed -i 's/$line/$line_new/g' /etc/myconfig

しかし、何も起こりません。

試みている

grep -rn "$line" /etc/myconfig

でも私を返し'myparam /path/to/a argB=/path/to/B xo'ます。

sedこの検索と置換を実行し、コマンドを正しく処理するコマンドを表現する正しい方法は何/ですか? (/同様のsedコマンドを使用してテキストファイル内の別の行を問題なく検索および置換し、その行に文字が含まれていないため、文字列の文字が問題を引き起こしていると思い/ます。

4

2 に答える 2

44
于 2012-04-25T05:52:13.747 に答える
15

これはあなたのために働くかもしれません:

sed -i "s|$line|$line_new|g" /etc/myconfig

とが補間される"ように、 を使用する必要があります。または、一致文字列または置換文字列にない任意の文字を区切り文字として使用します。$line$new_line|

于 2012-04-25T05:56:39.947 に答える