繁体   English   中英

Powershell,从html文件中删除文本行

[英]Powershell, delete lines of text from html file

我在html文件中有一些报告。 我需要将它们放置在卓越的位置并进行一些更改,所以我认为我可以事先使用powershell进行这些更改。 有些行位于固定位置,而其他行则不在,因此我需要通过使脚本识别模式来删除它们。

从顶部开始的固定线:12-14,17,19,25-27,30-32,40-42从底部开始的固定线:3-13,48-60

我需要查找和删除的模式是这样的:

<td align="center">random string</td>
<td align="left">random string</td>
<td align="left">random string</td>
<td align="left">random string</td>
<td align="right">random string</td>

对于固定线路,我可以执行以下操作:

(gc $maindir\Report23.HTML) | ? {(12..14) -notcontains $_.ReadCount} | out-file $maindir\Report23b.HTML

它在删除第12-14行时起作用,但是我需要将其余的固定行号放在同一命令中,我似乎无法弄清楚该怎么做。 另外,输出文件的文件大小是原始文件大小的两倍,我觉得很奇怪。 我尝试使用set-content生成接近原始文件的文件大小,但在某些部分中断了文本编码。

我不知道如何去识别模式...

你不能做这样的事情:

$lines = 12..14
$lines += 17
$lines += 25..27
$lines += 30..32
$lines += 40..42

然后在where子句中使用该数组:

? {$lines -notcontains $_.ReadCount} 

输出文件的文件大小是原始文件的两倍,因为原始文件可能是ASCII编码的,新文件默认是Unicode编码的。 尝试这个:

$length = (gc $maindir\Report23.HTML).length
$rangefrombottom = ($length-60)..($length-48)+($length-13)..($length-3)
$rangefromtop = 12..14+17,19+25..27+30..32+40..42
(gc $maindir\Report23.HTML) | ? {$rangefromtop -notcontains $_.ReadCount} | ? {$rangefrombottom -notcontains $_.ReadCount} | out-file -encoding ASCII $maindir\Report23b.HTML

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM