在一堆SVG文件(同一个文件夹)中,我需要删除第一个 3 行或甚至更好 start-tag <svg ...
然后我有<a>
- 像这样的标签:
<a xlink:href="1">
所有这些出现都应该以这种方式替换:
<a onClick="top.getLink(1)">
然后使用这些更改覆盖相应的文件。
在Notepad ++中,这种搜索和替换a-Tag的模式有效:
<a xlink:href\="(.*)">
我可以用它替换它以获得所需的输出:
<a onClick="top.getLink\(($1)\)">
但是在Powershell中,我不太了解正则表达式或一般语法,以便将其解除。 我们的想法是重复运行这个PowerShell脚本,理想情况下忽略以前处理过的文件。
你能告诉我一个如何做到这一点的例子吗?
谢谢。
答案 0 :(得分:0)
使用-replace:
,使用适当的regEx解决问题的代码如下所示 $yourText = '<a onClick="top.getLink(1)">'
$yourText -replace '<a xlink:href\="(.*)">','<a onClick="top.getLink\(($1)\)">'
尝试一下,如果这有助于您的情况,请告诉我们。
答案 1 :(得分:0)
这对我有用:谢谢。
$regex = '<a xlink:href\="(.*)">'
$replace ='<a onClick="top.getLink($1)>'
$file = "C:\temp\abc.svg"
$firstLine = Get-Content $file -First 1
if($firstLine -match '^<\?xml'){
(Get-Content $file) | Select-Object -Skip 3 |
Foreach-Object {$_ -replace $regex,$replace} |
SET-Content $file
}
else{
break;
}
答案 2 :(得分:0)
一个选项:
(Get-Content $file -raw) -replace '.+?(<svg.+)','$1' -replace '<a xlink:href="1">','<a onClick="top.getLink(1)">' |
Set-Content $file