2011-10-19 1 views

答えて

1
awk '/<span class="content_subhd">/, /<\/span>/ { 
    r = r ? r $0 : $0 
    if (/<\/span>/) { 
    print r; r = x 
    } 
    next 
    }1' infile 

あなたの既存のファイルの内容置き換えたい場合:(OP要求ごとなど)は、質量交換の

awk > _new_ '/<span class="content_subhd">/, /<\/span>/ { 
    r = r ? r $0 : $0 
    if (/<\/span>/) { 
    print r; r = x 
    } 
    next 
    }1' your_file && 
    mv -- _new_ your_file 

追加・ソリューション:sedのとおり

find <your arguments here> | 
    while IFS= read -r; do 
    awk > _new_ '/<span class="content_subhd">/, /<\/span>/ { 
    r = r ? r $0 : $0 
    if (/<\/span>/) { 
    print r; r = x 
    } 
    next 
    }1' "$REPLY" && 
    mv -- _new_ "$REPLY" 
    done 
+0

ありがとうございます。 しかし、出力を同じファイルにリダイレクトするにはどうすればよいですか? 私は行を追加して印刷しようとしますが、動作していないようです。 – felix

+0

@felix、溶液を加えた。 –

+0

ご協力いただきありがとうございます! 私はawkの初心者で、あまり馴染みがない。 このスクリプトをfindコマンドと組み合わせて、一括置換を行っています。 私はいつか引数の置き換えを理解するためにはいつも必要と思うが、すでにあなたから大きな助けを得る。再度、感謝します。乾杯! – felix

1

をでタグ付けされていますこの質問は1ライナーです:

sed '/<span class="content_subhd">/,/<\/span>/{H;/<\/span>/{s/.*//;x;s/\n//g;p;};d}' source 

特別な「スパンクラス」の場合を除いて、すべての行が通過します。これらの行は保留スペースに移動され、改行は削除され、次に複数行の行が削除されます。

関連する問題