Import-Csv
接受 CSV 并输出PSCustomObject
s。它适用于文件具有标题行的情况,并将其读取为对象的属性。例如
FirstName,LastName
James,Cameron
Kirk,Cobain
# ->
@{FirstName='James';LastName='Cameron'}
@{FirstName='Kirk';LastName='Cobain'}
etc.
如果您的文件没有标题行,它将占据第一行,然后破坏其他所有内容。您需要提供-Header 'h1','h2',...
参数来解决这个问题。所以你可以使用-Header Name
,但是你的数据只有一个属性,所以没有太大的好处。
ConvertFrom-Csv
旨在做同样的事情,但来自变量而不是文件中的 CSV 数据。它们不会有用地链接在一起。它会尝试,但你最终得到的是......
一个对象,具有一个名为的属性'@{James=Kirk}'
和一个值为'@{James=Linda}'
,其中“James”是从第 1 行作为列标题获取的,奇怪的语法是通过第二次转换强制这些对象。
根本不清楚您为什么file.txt
要从file.txt
. 但由于您没有 CSV,因此使用 CSV cmdlet 没有任何好处。
$lines = Get-Content file.txt
$master = Get-Content master.txt
foreach ($line in $lines)
{
if ($master -contains $line)
{
Add-Content file2.txt $line
}
}
要不就
gc file.txt |? { sls $_ master.txt -quiet } | set-content file2.txt
从我的代码块自动生成的 PS 帮助链接(如果有):