Cor*_*ugh 8 html replace coding-style newline sed
我有一个sed命令,我想在一个巨大的,可怕的,丑陋的HTML文件上运行,该文件是从Microsoft Word文档创建的.它应该做的就是删除字符串的任何实例
style='text-align:center; color:blue;
exampleStyle:exampleValue'
Run Code Online (Sandbox Code Playgroud)
我试图修改的sed命令是
sed "s/ style='[^']*'//" fileA > fileB
Run Code Online (Sandbox Code Playgroud)
它很有效,只要匹配文本中有新行,就不匹配.是否有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__
Run Code Online (Sandbox Code Playgroud)
一个班轮将是:
$ perl -e 'local $/; $_ = <>; s/ style=\047[^\047]*\047//g; print' fileA > fileB
Run Code Online (Sandbox Code Playgroud)