说,
我有一个由soffice --headless
命令生成的Word(DOCX)的html文件。然后我做了tidy
命令,以便通过从Word中删除不必要的html / css化妆品来使html看起来干净。
我看到类似
的内容<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
<p lang="en-US" class="western c31"></p>
... repeated 15 times
我做了这些命令:
sed -e 's/<(.*?)><\/(.?)>//g' > ./hasil.html
sed -e 's/<[a-z] lang="(.*) class="western (.*?)><\/[a-z]>//g' > ./hasil.html
从HTML文件中删除<p lang="en-US" class="western c31"></p>
并没有按预期工作。
任何帮助都会受到赞赏。谢谢。
答案 0 :(得分:0)
所有sed的正则表达式都在寻找(最左边)最长的匹配。对于非贪婪的正则表达式,Perl和其他人可能支持.*?
形式,但是sed没有。
如果要删除这些行,请尝试:
sed '\|<p lang="en-US" class="western c31"></p>|d' hasil.html
d
是sed的删除命令。
如果你想使用替换命令只删除那些标记,那么留下任何其他内容(如果有的话)就行了:
sed 's|<p lang="en-US" class="western c31"></p>||g' hasil.html