我正在尝试将FreeBSD机器上使用的“ sed”脚本转换为Windows 10上使用“ Powershell”的脚本。
这是sed脚本。它用于从电子邮件中删除标题以及紧随其后的行,然后将输出发送到“ email_1.txt”。该文件通过命令行输入到脚本。即“命令文件”
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<table border="1">
<tr>
<th>Affiliate name</th>
<th>Referral name</th>
<th>Affiliate bonus</th>
</tr>
<tbody ng-repeat="item in items">
<tr ng-repeat="ref in item.referrals">
<td ng-if="$index == 0" rowspan={{item.referrals.length}}>{{item.login}}</td>
<td>{{ref.login}}</td>
<td>{{ref.bonusAmount > 0 ? '$' + ref.bonusAmount:''}}</td>
</tr>
</tbody>
</table>
</div>
我找不到使它与“ PowerShell”一起使用的方法。
谢谢!
答案 0 :(得分:0)
您有两种选择。
安装sed- 像scoop之类的方法在这里可能会有所帮助。
写一个纯Powershell解决方案。 这将与您尝试在“纯” bash中执行相同操作时编写的内容非常相似。尝试这样做:
-
function Delete-TargetLines {
[cmdletbinding()]
param(
[String]$needle,
[int]$count = [int]1,
[parameter(ValueFromPipeline)]
[string[]]$haystack
)
Begin {
[int]$seen = 0
}
Process {
if ($seen -gt 0) {
$seen -= 1
} elseif ( $haystack -match $needle ) {
$seen = 1
} else {
$haystack
}
}
}
以及运行它的示例:
> @("Pre-line", "This is a test", "second line", "post line") | Delete-TargetLines -needle "test"
Pre-line
post line
> Get-Content $myfile | Delete-TargetLines -needle 'value' > $outfile