我有一个包含2行的文件,并希望将行的第一个单词设置为变量。搜索后我有以下脚本:
$contents = @(Get-Content C:\testfile.txt)
foreach($line in $contents) {
$s = $line -split ' '
$var1 = $s[0]
$var2 = $s[1]
}
Write-Host "$var1"
Write-Host "$var2"
问题是$s[1]
是第一行的第二个单词。如何让$var2
成为第二行的第一个单词,依此类推?
答案 0 :(得分:2)
你可能想告诉我们你取得了什么,这对我来说有点尴尬。但是,每次迭代只能设置一个变量。
我会使用-Begin
cmdlet的Foreach-Object
块来初始化一个计数器并在循环中增加它:
Get-Content 'C:\testfile.txt' | ForEach-Object -Begin {$i = 1} -Process {
Set-Variable "var${i}" ($_ -split ' ')[0]
$i++
}
如果你需要一种不那么动态的方法(如果真的只有两行),你可以使用它:
$content = Get-Content 'C:\testfile.txt'
$var1 = ($content[0] -split ' ')[0]
$var2 = ($content[1] -split ' ')[0]
答案 1 :(得分:0)
我采用了略有不同的方法,将第一个单词写到一个单独的数组($ firstword)中,然后遍历该数组以进行打印。这应该对所有文本文件通用。
$contents = @(Get-Content C:\testfile.txt)
$firstword = @()
foreach($line in $contents) {
$firstword += ($line -split ' ')[0]
}
foreach($word in $firstword){
Write-Host $word
}