我有一些html文件格式的报告。我需要将它们放到excel中并进行一些更改,所以我认为我可以在使用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,它产生的文件大小接近于原始文件大小,但在某些部分破坏了文本编码。
我不知道如何去识别模式……
发布于 2012-06-11 18:49:09
输出文件的文件大小是原始文件的两倍,因为原始文件可能是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
发布于 2012-06-11 18:24:11
你不能这样做吗:
$lines = 12..14
$lines += 17
$lines += 25..27
$lines += 30..32
$lines += 40..42
然后在where子句中使用该数组:
? {$lines -notcontains $_.ReadCount}
https://stackoverflow.com/questions/10978039
复制相似问题