在文件中找到重复的字符串

时间:2017-09-08 04:18:23

标签: regex powershell cmd

我有一个大小为几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中可能的脚本来实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

您可以在PowerShell中使用一个使用前瞻并向后看的RegEx来执行此操作:

Get-Content Data.txt | ForEach-Object { 
    $Check = $_ -Match '(?<= VolumeTotal\=)\d*(?= )'
    If ($Check) { $Matches.Values }
}

模式:(?<= VolumeTotal\=)\d*(?= )在字符串\d*和空格字符之间查找任意数量的数字' VolumeTotal='

结果将发送到自动变量$Matches,因此如果找到模式,我们将返回此变量的值。