2017-07-25 3 views
-1

私がクリーニングしようとしているCSVファイルがあり、その一部が値の中のHTMLタグを削除しています。私はこの解決策を見つけた:sed -e 's/<[^>]*>//g' file.htmlこれはthreadから来た。sedまたはperlでRegexが改行を取得しない

これを試す前に、RegExrを使って正規表現(/<[^>]*>/g)をテストしました。私は私のテキストサンプルとして、以下を使用:RegExrオン

<asd> 
<asd> 
< asdsad 
adsad > 

、すべての3つのタグは、すなわち私がが残ってる、私はタグを削除するsedコマンドを使用する場合、第三のタグが残っている、しかし、一致しています:

< asdsad 
adsad > 

私はclass="some-class-name"のように、引用符で属性を持ち、それらの引用符はCSVフォーマットをいじりしている私はきれいにしようとしていCSVのタグのように多く、同様に複数行のタグを削除できるようにする必要があります。

私はPerlコマンドを試しました。Perlはより良いマルチライン処理を行うはずです。私はperl -pe 's/<[^>]*>//g' fileを試しましたが、sedと同じ結果でした。

EDIT:Regexエンジン(RegExr)が別のもの(sedとPerl)と異なるエンティティをキャプチャしていた理由と、他の人が最初の結果を表示する方法を知りました。 possible duplicateの答えは私の問題を解決するために起こったが、質問は別の(しかし同様の)場所から来た。

+0

http://search.cpan.org/dist/HTML-Strip/Strip.pm – xxfelixxx

答えて

0

わかりやすくするため、@LukStormsのコメントから回答を投稿します。回答はthis threadです。

TL; DR:-0フラグは、少なくともPerlでこの問題を解決しました。

全コマンド:perl -0pe 's/<[^>]*>//g' file

関連する問題