标题: [问题求助] PowerShell怎样匹配字段? [打印本页]
作者: 娜美 时间: 2023-7-20 09:37 标题: PowerShell怎样匹配字段?
idwma哥 谢谢解答在上题中是按列数匹配
那么如果不是按列数匹配情况
转为
如果在有企业字段这行中, , 而是匹配这种格式字段 **:**:**:**:**:** 其中有5个:隔开 其*星号可视为是大字母数字 意思是在有企业字段这一行中, 检索出匹配这种格式字段, 不论他在那一位置- #@&cls&powershell "type %~s0|out-string|iex"&exit
- $a=gc -readcount 0 D:\UTF16.txt
- $b=(($a[-1..-500] -match '企业 ')[0] -split ' ')[6]
- $f=0
- sc D:\out.txt $(foreach($i in $a){if(($f -eq 0) -and $i -match "简名:\S+\s$b"){$i;$f=1}elseif(($f -eq 1) -and $i -match '已执行'){$f=0;$i,''}elseif($f -eq 1){$i}})
复制代码
- 偿试过各种修改, 都似乎不对 ,
- $b=($a[-1..-500] -match '企业 ')[0] -replace '([0-9A-Z]{1,2}\:){5}[0-9A-Z]{1,2}'
复制代码
作者: idwma 时间: 2023-7-20 16:59
- #@&cls&powershell "type %~s0|out-string|iex"&exit
- $a=gc -readcount 0 D:\UTF16.txt
- $b=(($a[-1..-500] -match '企业 ')[0] -replace '(?i).*?(([0-9A-Z]{1,2}:){5}[0-9A-Z]{1,2}).*','$1'
- $f=0
- sc D:\out.txt $(foreach($i in $a){if(($f -eq 0) -and $i -match "简名:\s*$b"){$i;$f=1}elseif(($f -eq 1) -and $i -match '已执行'){$f=0;$i,''}elseif($f -eq 1){$i}})
复制代码
作者: 娜美 时间: 2023-7-20 17:47
本帖最后由 娜美 于 2023-7-20 18:08 编辑
回复 2# idwma
idwma哥
偿试执行一下会返回提示- iex : 所在位置 行:3 字符: 95
- + ... '企业 ')[0] -replace '(?i).*?(([0-9A-Z]{1,2}:){5}[0-9A-Z]{1,2}).*','$1'
- + ~
- 表达式中缺少右“)”。
- 所在位置 行:4 字符: 1
- + $f=0
- + ~~~~
- 表达式或语句中包含意外的标记“$f=0”。
- 所在位置 行:1 字符: 53
- + ~~~
- + CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
- + FullyQualifiedErrorId : MissingEndParenthesisInExpression,Microsoft.PowerShell.Commands.InvokeExpressionCommand
复制代码
作者: idwma 时间: 2023-7-20 18:02
多了一括号- $b=($a[-1..-500] -match '企业 ')[0] -replace '(?i).*?(([0-9A-Z]{1,2}:){5}[0-9A-Z]{1,2}).*','$1'
复制代码
作者: 娜美 时间: 2023-7-20 18:18
回复 4# idwma
原来如此, Sorry怪我不仔细检查一下, 这次正确了 多谢idwma哥哥
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |