我需要保留从文本文件中提取数据的前5个字符。
数据如下所示:
S1831KWT0081 S2004KWT0083 S2351KWT0085 S0054KWT0087
结果应如下所示:
S1831 S2004 S2351 S0054
我可以在PowerShell中设置变量时使其正常工作:
PS> $a = "S1831KWT0081"
PS> $a.Substring(0, $a.IndexOf('K'))
S1831
但是当我试图从文本文件中提取时我感到困惑。
答案 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] }