2012-04-09 6 views
0

文字列の一致に基づいて特定の行を検索し、別の行に置き換えるにはどうすればよいですか? 以下は、bashスクリプトを使用して変更する必要のあるhtml strongの例です。行の代わりにテキストに基づいてHTMLファイルのタグテキストを検索して置き換える方法

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

への変更:testsstoreと

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

すなわちteststore。ちょうど 's'を追加しようとしています。

私はすべての文字列に一致する必要がありますね。なぜなら、downpanel.cssは、 's'で編集する行を区別するためです。

これは、Regualar式で実現できると言われていますが、私はそれを作ることができませんでした。構文の助けを借りれば、非常に幸運です。

ありがとうございました。このリンクのすべて出現を交換する必要がある場合は、あなたが本当にsedコマンドに入れ、その後、あなたが表示され、全体の部分を一致させる必要がある場合は、単に

sed 's_"https://teststore.xxx.com/store/downpanel.css"_"https://testsstore.xxx.com/store/downpanel.css"_g' old_file > new_file 


ジャック

+2

ob http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454:正規表現を使用してHTMLと一致させないでください。 – geekosaur

答えて

1

を行います。改行に気をつけて、真ん中のどこかで遭遇するとマッチを台無しにするでしょう。

sedの場合はreferenceです。または、Linuxにman sedと入力します。このような問題を解決するために

+0

ありがとうございました.. ..sed 's_ "https://teststore.xxx.com/store/downpanel.css" _ "https://testsstore.xxx.com/store/downpanel.css" _g' did私が試していたように働いた。 – Johnbritto

+0

@Johnbritto:あなたを助けた答えを受け入れることを忘れないでください。 http://stackoverflow.com/faq#howtoaskを参照してください。 – Johnsyweb

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スイッチを追加します。

関連する問題