我有一个大小为几MB的文本文件Data.txt
它有重复的行,如
VolumeTradingDate=2017-09-05T00:00:00.000 VolumeTotal=73147 LastTradeConditions=0
key=value
格式的key=value
有各种Values
数据,为简单起见,我的数据很少
VolumeTotal
正在改变。
我想要搜索所有出现的value
及其值,并仅将该部分打印/转储到不同的行中。其cmd FindStr
最多可包含25个字符
我尝试使用//Sorts the list ascending order
Collections.sort(list);
//Reverses the sorted list so it is effectively Descending order
Collections.reverse(list);
findstr / C:VolumeTotal =“C:\ Work \ Data.txt”
但这并没有给我预期的结果。它打印整行。
任何人都可以建议在cmd或powershell中可能的脚本来实现这一目标吗?
答案 0 :(得分:2)
您可以在PowerShell中使用一个使用前瞻并向后看的RegEx来执行此操作:
Get-Content Data.txt | ForEach-Object {
$Check = $_ -Match '(?<= VolumeTotal\=)\d*(?= )'
If ($Check) { $Matches.Values }
}
模式:(?<= VolumeTotal\=)\d*(?= )
在字符串\d*
和空格字符之间查找任意数量的数字' VolumeTotal='
。
结果将发送到自动变量$Matches
,因此如果找到模式,我们将返回此变量的值。