【发布时间】:2016-02-26 20:31:17
【问题描述】:
我有一个在 powershell (v2) 中运行的脚本,它从文件中删除字符串。
基本流程是:
(Get-Content $Local_Dir1\$filename1) -replace 'longString', 'shortString' | `
Set-Content $cfg_Local_Dir\$filename1
Get-Content $Local_Dir1\$filename1 | `
Where-Object {$_ -notmatch 'stringToMatch'} | `
Where-Object {$_ -notmatch 'secondStringToMatch'} | `
Set-Content $Local_Dir1\$filename
这很好用。但是,我有一个烦人的字符串,我无法摆脱。
它基本上包括:一个换行符和回车,4个空格,然后是一个换行符和回车。在十六进制中是0D 0A 20 20 20 20 0D 0A
我怎样才能删除它?
我试过了:
Where-Object {$_ -notmatch ' '} #4 x spaces
但这删除了该行之后的所有内容(这是在第二行)。
我看了:
Where-Object {$_ -notmatch '$([char]0x0D)'}
(如果它删除了所有的回车,我会扩展它)我在另一篇帖子中看到的,但这没有任何作用。
处理这个问题的正确方法是什么?
补充:2015-11-24 13:49
示例数据:
<?xml version="1.0" encoding="UTF-8"?>
<start_of_data>
<job>123456</job>
<name>ABC123</name>
<start></start>
</start_of_data>
<start_of_data>
<job>789012</job>
<name>DEF345</name>
<start></start>
</start_of_data>
最初第2行有一个字符串,被'stringToMatch'删除,空格在第3行。
【问题讨论】:
-
不应该是
Where-Object {$_ -notmatch "$([char]0x0D)"}加上双引号,来扩展变量吗? -
谢谢你,我总是把我的报价弄错 - (我应该学会在遇到问题时自动更改我的报价)。 . .
标签: string powershell replace powershell-2.0