gpt4 book ai didi

shell - 遍历文本文件并查找不在所有文件中的行

转载 作者:行者123 更新时间:2023-12-03 00:47:15 24 4
gpt4 key购买 nike

我有3个文本文件的文件夹。
文件1,称为test1.txt具有值

11
22
22

test2.txt具有值
11
22
22
33

test3.txt具有值
11
22
22
33
44
44

如何获得等于(New.txt)的最终结果
成为:
44
44

此值不在其他2个文件中,所以这就是我想要的。

到目前为止的代码:
$result = "C:\NonDuplicate.txt"

$filesvalues=gci "C:\*.txt" | %{$filename=$_.Name; gc $_ | %{[pscustomobject]@{FileName= $filename; Row=$_ }}}

#list file where not exists others file with same value
$filesvalues | % {
$valtockeck=$_
[pscustomobject]@{
Val=$valtockeck
Exist=$filesvalues.Where({ $_.FileName -ne $valtockeck.FileName -and $_.Row -eq $valtockeck.Row }).Count -gt 0
}

} |

where Exist -NE $true |
% {$_.Val.Row | out-file $result -Append}

这是错误:
Where-Object : Cannot bind parameter 'FilterScript'. Cannot convert the "Exist" value of type "System.String" to type "System.Management.Automation.ScriptBlock".
At line:16 char:23
+ where <<<< Exist -NE $true |
+ CategoryInfo : InvalidArgument: (:) [Where-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.WhereObjectCommand

最佳答案

试试这个

#list files/values couple
$filesvalues=gci "C:\temp\test\test*.txt" -file | %{$filename=$_.Name; gc $_ | %{[pscustomobject]@{FileName= $filename; Row=$_ }}}

#list file where not exists others file with same value
$filesvalues | % {
$valtockeck=$_
[pscustomobject]@{
Val=$valtockeck
Exist=$filesvalues.Where({ $_.FileName -ne $valtockeck.FileName -and $_.Row -eq $valtockeck.Row }).Count -gt 0
}

} |

where Exist -NE $true |
% {$_.Val.Row | out-file "c:\temp\test\New.txt" -Append}

关于shell - 遍历文本文件并查找不在所有文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com