Answers:
这就是我要做的:
Get-Content .\in.txt | Where-Object {$_ -notmatch 'not'} | Set-Content out.txt
Snark的代码行也是如此,但是首先将所有文件加载到数组中,这可能会在内存方面对大文件造成问题。
Set-Content
吗?我认为这Set-Content
不是的替代品Out-File
。
Get-Content .\in.txt | Where-Object {$_ -notmatch 'not'} | Set-Content out.txt
Out-File本质上是Set-Content,但是它通过默认格式而不是简单的字符串转换来运行输入。
这将起作用:
(Get-Content "D:\Logs\co2.txt") -notmatch "not" | Out-File "D:\Logs\co2.txt"
我只需要开始工作,并提出以下建议:
$InServerName = 'SomeServerNameorIPAddress'
$InFilePath = '\Sharename\SomePath\'
$InFileName = 'Filename.ext'
$OutServerName = 'SomeServerNameorIPAddress'
$OutFilePath = '\Sharename\SomePath\'
$OutFileName = 'Filename.out'
$InFile = -join('\\',$InServerName,$InFilePath,$InFilename)
$OutFile = -join('\\',$OutServerName,$OutFilePath,$OutFilename)
$FindStr = 'some string to match on'
$CompareStr = [scriptblock]::Create($FindStr)
$CompareStr
Get-Content $InFile | Where-Object {$_ -notmatch $CompareStr} | Set-Content $OutFile
Get-Content $OutFile
关键在于使用脚本块的“ Where-Object”(用花括号表示)需要在脚本块创建事件中声明变量,因此
$CompareStr = [scriptblock]::Create($FindStr)
线。
通过以这种方式进行结构化,可以创建一个函数,将部分匹配的文本字符串传递给它,使用传递的值执行脚本块的创建,并使它正常工作。
上面的答案不能正确解释如何在变量中传递要替换的值。