0

文字列の一致に基づいて特定の行を検索し、それを別の文字列に置き換えるにはどうすればよいですか。以下は、bash スクリプトを使用して変更する必要がある html の強力な例です。

< link type="text/css" rel="stylesheet" href="https://teststore.xxx.com/store/downpanel.css">

への変更:

< link type="text/css" rel="stylesheet" href="https://testsstore.xxx.com/store/downpanel.css">

つまり、teststore を含む teststore です。's' を追加しようとしているだけです。

すべての文字列を一致させる必要があると思います。downpanel.css は、編集する行を 's' で区別するものだからです。

これは正規表現で実現できると言われていますが、できませんでした。構文に関するヘルプは非常に素晴らしいものです。

ありがとう。
ジャック

4

2 に答える 2

0

このような問題を解決するには、通常、次のsedような構造を使用します。

sed -e '/unique pattern/s/string or pattern/replacement string/' file

最初の/unique pattern/部分は、パターンが指定した行に置換を制限します。あなたのような単純なケースでは、 を含むすべての行で置換を実行するだけで十分な場合があるteststoreため、一意のパターン部分を省略でき、置換がグローバルになります。

sed -e 's/teststore/testsstore/' file

これが問題であり、何かを置き換えてはならない場合は、おそらく次のように、元の形式を使用できます。

sed -e '/link.*teststore/s/teststore/testsstore/' file

影響を制限するのに役立ちます。

これは、変更されたバージョンのみfileを stdout に書き込むことに注意してください。-iその場で変更するには、スイッチをに追加しsedます。

于 2012-04-09T11:07:42.797 に答える