0

HTML コードの行を変更して、ページが最後に更新された日時を示すスクリプトを実行したいと考えています。たとえば、次の行があります

<d>This page was last updated on 29.04.2013 at 00:34 UTC</d>

今更新しているので、その行を次のように置き換えたい

<d>This page was last updated on 15.05.2013 at 15:50 UTC</d>

これは、<d>タグを持つソース コードの唯一の行なので、うまくいけば役立ちます。現在の日付と時刻で新しい文字列を生成するコードが既にいくつかありますが、古い文字列を置き換える方法がわかりません (変更されるため、正確にはわかりません)。

前の行にコメントを入れて(with ) を含む<!--date-->行全体を削除してから、新しい文字列であるコメントの後に新しい行を入れようとしましたが、失敗します。たとえば、コメントの後に文字列を挿入して使用したい場合<d>greptext

sed -i 's/<!--date-->/<!--date-->text/' file.html

私は得るinvalid command code j<文字列に、!、 などの特殊文字が含まれているためだと思いますが>、上記の日付文字列を入れたい場合は、 や など、さらに多くの文字を:使用し/ます。これを修正する方法についてのアイデアをありがとう。

4

3 に答える 3

1

<!--date--> ハックは必要ありません。sed コマンドでは、「/」以外に正規表現と別の区切り文字を使用できます。

sed -i.bak 's@<d>This page was last updated on.*</d>@<d>This page was last updated on 12.05.2013 at 00:38 UTC</d>@' whatever.html

または、$replacement という変数に更新がある場合:

sed -i.bak "s@<d>This page was last updated on.*</d>@$replacement@" whatever.html
于 2013-05-15T15:02:44.467 に答える
0

コマンドラインを使用するときは、次のように特殊文字をエスケープしてみてください:
!===>\!

于 2013-05-15T14:57:45.460 に答える