读取逐行文件和拆分值

时间:2013-09-04 14:20:58

标签: powershell powershell-v2.0

我需要读取如下组成的txt文件:

      AA=1000,AA=320009#999999

      AA=1011,AA=320303#111111

对于每个引线,我需要用“#”分割它以获得第一个转弯

 $test[0] = AA=1000,AA=320009 and $test[1]=999999

并在第二个回合

 $test[0] = AA=1000,AA=320003   $test[1]= 1111111

我有一些问题需要了解如何使用get-content或获取它。

3 个答案:

答案 0 :(得分:6)

# Basically, Get-Content will return you an array of strings such as below:
# $tests = Get-Content "c:\myfile\path\mytests.txt"

$tests = @(
    "AA=1000,AA=320009#999999",
    "AA=1011,AA=320303#111111"
)

$tests | %{ $test = $_ -split '#'; Write-Host $test[0]; Write-Host $test[1] }

以上一行相当于:

$tests | foreach {
  $test = $_ -split '#'
  Write-Host $test[0]
  Write-Host $test[1]
}

意味着对于$ ​​lines的每一行(每行由$ _实现,一个在'#'上进行拆分(它产生一个在Write-Host语句中使用的数组)

答案 1 :(得分:3)

如果文本文件中的所有行都具有相同的结构,则可以直接在-split的结果上使用Get-Content运算符:

(Get-Content 'C:\path\to\your.txt') -split '#'

结果是一个数组,其中偶数索引(0,2,4,...)包含一行的第一部分,奇数索引(1,3,5,...)包含一行的最后部分。

示例:

PS C:\> Get-Content .\test.txt
AA=1000,AA=320009#999999
AA=1011,AA=320303#111111
PS C:\> $test = (Get-Content .\test.txt) -split '#'
PS C:\> $test[0]
AA=1000,AA=320009
PS C:\> $test[3]
111111

答案 2 :(得分:2)

其他解决方案:

Get-Content "c:\temp\test.txt" | ConvertFrom-String -Delimiter "#" -PropertyNames Part1, Part2