File 从文本文件中提取部分文本行
我需要保留从文本文件中提取的数据的前5个字符 数据如下所示: S1831KWT0081 S2004KWT0083 S2351KWT0085 S0054KWT0087 S1831 S2004 S2351 S0054File 从文本文件中提取部分文本行,file,powershell,text,extract,File,Powershell,Text,Extract,我需要保留从文本文件中提取的数据的前5个字符 数据如下所示: S1831KWT0081 S2004KWT0083 S2351KWT0085 S0054KWT0087 S1831 S2004 S2351 S0054 $re = '^([a-z]\d{4}).*' (Get-Content 'C:\path\to\input.txt') -match $re -replace $re, '$1' 但我在尝试从文本文件中提取时遇到了问题。要解决这个问题,需要逐行解析文本文件。基本上,将每一行视为数组
$re = '^([a-z]\d{4}).*'
(Get-Content 'C:\path\to\input.txt') -match $re -replace $re, '$1'
但我在尝试从文本文件中提取时遇到了问题。要解决这个问题,需要逐行解析文本文件。基本上,将每一行视为数组中的一个值
Get-Content location.txt | foreach { $_.Substring(0, $_.IndexOf('K')) }
只是为了表明,总是有不止一种时髦的方式;-) 或者更详细的版本
Get-Content .\input.txt |
ForEach-Object { $_.split('K')[0] }
另一个选项是正则表达式替换:
(Get-Content 'C:\path\to\input.txt') -replace '^(.{5}).*', '$1'
这也将允许您进行更具体的匹配,例如:
S1831KWT0081
S2004KWT0083
S2351KWT0085
S0054KWT0087
S1831
S2004
S2351
S0054
$re = '^([a-z]\d{4}).*'
(Get-Content 'C:\path\to\input.txt') -match $re -replace $re, '$1'
>但我在尝试从文本文件中提取时被卡住了。为什么呢你能举一些你试过的例子吗?您所给出的唯一代码就是您的工作内容。$location=Get Content“C:\location.txt”$location.Substring(0,$location.IndexOf('K'))
$location=Get Content“C:\location.txt”| ForEach对象{$\.Substring(0,$\.IndexOf('K')}
这实际上暴露了您所面临的问题-在您的问题中,将每一行视为一个单独的实体。在您的评论中,您基本上将整个数组视为一个变量。:)令人惊讶的是,一旦你看到解决方案,它是多么容易。谢谢大家!