1

htmlファイルを含むネストされたサブディレクトリがあります。これらのhtmlファイルのそれぞれについて、パターンまでファイルの先頭から削除したいと思います。<div id="left- これはosxのターミナルからの私の試みです。

find . -name "*.html" -exec sed "s/.*?<div id=\"left-col/<div id=\"left-col/g" '{}' \;

ターミナルで多くのhtml出力を取得しますが、置換を含むファイルや書き込まれるファイルはありません。

4

3 に答える 3

4

コマンドには2つの問題があります。最初の問題は、の出力場所を選択していないことですsed。2つ目は、sedスクリプトが意図したとおりに動作していないことです。投稿したスクリプトは各行を調べ、その行の前にあるすべてのものを削除します<div>。のない行は<div>影響を受けません。あなたは試してみたいかもしれません:

find . -name "*.html" -exec sed -i.BAK -n "/<div id=\"left-col/,$ p" {} \;

.BAKこれにより、元のバージョンに追加することでファイルが自動的にバックアップされます。これが望ましくない場合は、-i.BAK単にに変更して-iください。

于 2010-06-08T16:12:04.260 に答える
1

sed正規表現の結果をstdoutファイルに書き込みたいときに、コンソールに出力します。

検索を実行してsedに置き換えるには、次の-iフラグを使用します。

find . -name "*.html" -exec sed -i "s/.*?<div id=\"left-col/<div id=\"left-col/g" '{}' \;

可能であれば、このコマンドを実行する前に、必ずファイルをバックアップしてください。そうしないと、誤って入力された正規表現によるデータ損失のリスクがあります。

于 2010-06-08T15:53:36.290 に答える
0

sedどこの出力も保存していません。それがhtmlを吐き出している理由です。

于 2010-06-08T15:49:45.093 に答える