我有一些看起来像这样的数据:
:setvar DatabaseName "CI_1814903104"
:setvar DefaultFilePrefix "CI_1814903104"
--etc.
GO
Run Code Online (Sandbox Code Playgroud)
我希望用空字符串替换所有sql cmd变量行(以:setvar开头的行),使得数据如下所示:
--etc.
GO
Run Code Online (Sandbox Code Playgroud)
这句话($script包含数据)似乎可以解决问题,但仍然留下新行:
$script -replace ":setvar(.*$)", ""
Run Code Online (Sandbox Code Playgroud)
结果是:
--etc.
GO
Run Code Online (Sandbox Code Playgroud)
如何在比赛中包含换行符?它似乎匹配它,但实际上并没有被替换.任何帮助赞赏.
这假设您正在从某个文件读入数据.根据您在数据中的读取方式,您可能拥有一组字符串而不是一个字符串.
PS C:\> $script = Get-Content data.txt
# Get-Content returns each line as a string object in an Object[].
PS C:\> $script.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\> $script[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
Run Code Online (Sandbox Code Playgroud)
如下所示,将Get-Content管道到Out-String将确保您获得单个字符串,然后您可以操作Windows换行符以删除相应的行.
PS <C:\> $script = ( Get-Content data.txt | Out-String ).Trim()
PS <C:\> $script -replace ":setvar(.*)`n", ""
--etc.
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15580 次 |
| 最近记录: |