我有一个包含大量数据的文件,如下所示:
______________________________________________________________________
. 1-9/16 TCS DRILL
. CUT = +2.685 / O/A = -2.685
. +2.685 / -2.685
. +3.935 / -3.935
______________________________________________________________________
. 1-11/32 TCS DRILL
. CUT = +0.9 / O/A = -3.237
. +0.9 / -3.237
. +0.9 / -4.487
___________________________________________________________________
. 1-11/32 TCS DRILL
. CUT = +5.699 / O/A = -5.699
__________________________________________________________________
. 1-1/8 TCS DRILL
. CUT = +1.553 / O/A = -1.553
. +2.338 / -2.338
. +2.513 / -2.513 我需要做的是在每个"_______“(下划线)之后获取第一行文本,
1-9/16 TCS钻机
1-11/32 TCS钻机
1-11/32 TCS钻机
.
如何在powershell中指定模式以匹配使用get-content或get-childitem项的行?
我可以在没有任何字符"=“、"+”、"-“的情况下匹配这些行,但这种模式不准确,也不起作用.
$file = 'C:\test\001.txt'
Get-Childitem $file | select-string -pattern '=','+','-' -notmatch发布于 2015-03-30 18:17:24
我会在您的示例数据(文本文件$file)中尝试这样的方法。
(Get-Content -Raw $file) -split "_+" |
Where-Object{$_} |
ForEach-Object{$_ -split "`r`n" | Select -Index 2}只需一次使用-Raw读取整个文件,然后在下划线组上对文件进行-split。使用Where-Object过滤空条目,因为在文件开始时会有一个条目。
对于从该过程中获得的每个块,我们将其拆分到换行符上。由于前2行是空空间,所以我们使用-Index获取包含所需内容的第一行数据。
样品输出
. 1-9/16 TCS DRILL
. 1-11/32 TCS DRILL
. 1-11/32 TCS DRILL
. 1-1/8 TCS DRILL 为了删除前导周期和下面的空格,我们可以对循环做一个小的更新
ForEach-Object{($_ -split "`r`n" | Select -Index 2) -replace "^\.\s+"}发布于 2015-03-30 17:55:08
你粘贴它的方式,至少,线条是下划线_,而不是连字符-。尝试将'_'添加到不匹配的事物列表中
https://stackoverflow.com/questions/29352488
复制相似问题