Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 从文本文件中提取部分文本行_File_Powershell_Text_Extract - Fatal编程技术网

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

File 从文本文件中提取部分文本行,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' 但我在尝试从文本文件中提取时遇到了问题。要解决这个问题,需要逐行解析文本文件。基本上,将每一行视为数组

我需要保留从文本文件中提取的数据的前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'

但我在尝试从文本文件中提取时遇到了问题。

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

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')}
这实际上暴露了您所面临的问题-在您的问题中,将每一行视为一个单独的实体。在您的评论中,您基本上将整个数组视为一个变量。:)令人惊讶的是,一旦你看到解决方案,它是多么容易。谢谢大家!