html – 匹配sed中的任何字符(包括换行符)

前端之家收集整理的这篇文章主要介绍了html – 匹配sed中的任何字符(包括换行符)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个sed命令,我想在一个巨大的,可怕的,丑陋的HTML文件上运行,该文件是从Microsoft Word文档创建的.它应该做的只是删除字符串的任何实例
style='text-align:center; color:blue;
exampleStyle:exampleValue'

我试图修改的sed命令是

sed "s/ style='[^']*'//" fileA > fileB

它工作得很好,除了在匹配文本中有新行时,它不匹配.是否有sed的修饰符,或者我可以做些什么来强制匹配任何字符,包括换行符?

我知道正则表达式在XML和HTML上很糟糕,等等等等,但在这种情况下,字符串模式的格式很好,因为样式属性总是以单引号开头并以单引号结束.因此,如果我能解决换行问题,只需用一个命令就可以将HTML的大小减少50%以上.

最后,事实证明,SinanÜnür的perl脚本效果最好.它几乎是瞬间的,它将文件大小从2.3 MB减少到850k.好的’Perl …

解决方法

sed逐行遍历输入文件,这意味着,据我所知,你想要的东西在sed中是不可能的.

您可以使用以下Perl脚本(未经测试):

#!/usr/bin/perl

use strict;
use warnings;

{
    local $/; # slurp mode
    my $html = <>;
    $html =~ s/ style='[^']*'//g;
    print $html;
}

__END__

一个班轮将是:

$perl -e 'local $/; $_ = <>; s/ style=\047[^\047]*\047//g; print' fileA > fileB

猜你在找的HTML相关文章