1

<p> Text </p>以下のhtmlがあり、シェルスクリプトの変数に基づいてセクションの変更を変更したいと思います。

<div id="demo"><p> Text </p></div>

<p> Text </p>以下の機能を使おうとしていますが、うまくいかないようです。また、定期的に変更されるので、セクションにあるものは何でも変更をピックアップする必要があります。

fnChangeTxt()
{
        sed -i 's/<div id="'$1'"><p>*.*</<div id="'$1'"><p>'$2'</' /var/www/html/alarm.html
}

関数を呼び出す

fnChangeTxt 'demo' 'Next'
4

3 に答える 3

1

見積もりを変更する必要があります。読みやすくするために、コマンドに別の区切り文字を使用することをお勧めしsます。これは、変更するテキストに表示される可能性が低い区切り文字です。これにより、HTMLで動作しているものの奇妙な場所にスラッシュが表示されて、読者が混乱する可能性が低くなります。

fnChangeTxt() 
{
     sed -i "s|<div id=\"$1\"><p>.*<|<div id=\"$1\"><p>$2<|" /var/www/html/alarm.html;
}
于 2012-06-11T13:46:15.623 に答える
0

手始めに、一重引用符は変数を提供された入力で置き換えることを防ぎます。

.*第二に、あなたは「すべて」に一致する必要があるだけです。(実際には「任意の文字の出現回数が0回以上」)

于 2012-06-11T10:26:30.120 に答える
0

本当に必要はありませんsed

#!/bin/bash

new='some stuff'

while read
do
    echo ${REPLY/<p>*<\/p>/<p> $new </p>}

done << '__END__'
<div id="demo"><p> Text </p></div> 
<div id="demo"><p> Text </p></div> 
__END__

与える:

<div id="demo"><p> some stuff </p></div>
<div id="demo"><p> some stuff </p></div>

ヒアドキュメントをファイル名に置き換えます。

于 2012-06-11T11:36:39.377 に答える