从文本文件中提取部分文本行

时间:2017-07-10 14:15:12

标签: file powershell text extract

我需要保留从文本文件中提取数据的前5个字符。

数据如下所示:

S1831KWT0081
S2004KWT0083
S2351KWT0085
S0054KWT0087

结果应如下所示:

S1831
S2004
S2351
S0054

我可以在PowerShell中设置变量时使其正常工作:

PS> $a = "S1831KWT0081"
PS> $a.Substring(0, $a.IndexOf('K'))

S1831

但是当我试图从文本文件中提取时我感到困惑。

3 个答案:

答案 0 :(得分:1)

要解决此问题,您需要逐行解析文本文件。基本上将每一行视为数组中的值。

Get-Content location.txt | foreach { $_.Substring(0, $_.IndexOf('K')) }

答案 1 :(得分:1)

另一种选择是正则表达式替换:

(Get-Content 'C:\path\to\input.txt') -replace '^(.{5}).*', '$1'

这也可以让你更具体的比赛,例如像这样:

$re = '^([a-z]\d{4}).*'
(Get-Content 'C:\path\to\input.txt') -match $re -replace $re, '$1'

答案 2 :(得分:0)

只是为了表明总有不止一种PoSh方式;-)

gc .\input.txt|%{$_.split('K')[0]}

或者更详细的版本

Get-Content .\input.txt | 
  ForEach-Object { $_.split('K')[0] }