powershell - 使用 Powershell 删除相似的文本行
问题描述
我有一个文本文件,我想在其中使用 Powershell 删除任何包含类似文本的行。
文本的一个例子是
> *blah*1.my_parameter: 30
> *1.my_parameter: 40
> *blah*2.my_parameter: 30
> *2.my_parameter: 40
我想保留
> *blah*1.my_parameter: 30
> *blah*2.my_parameter: 30
并删除
> *1.my_parameter: 40
> *2.my_parameter: 40
我已经进行了很好的搜索并找到了 -match 和 Get-Unique 命令,但到目前为止似乎没有任何效果。提前感谢您的帮助
解决方案
以下将起作用,但它会在大型输入文件上使用大量内存。这个想法是对匹配正则表达式的所有输入进行分组,按长度对组进行排序,然后选择降序排序结果中的第一个。
$reg = [Regex]::new('\*[\w.]+:')
Get-Content <testfile> |
Group-Object {([Regex]::Match($_, $reg)).Value} |
Select-Object Group |
Foreach-Object {
$_.Group |
Sort-Object -Descending $_.length |
Select-Object -First 1
}
测试
$test = @(
'> *blah*1.my_parameter: 30'
, '> *1.my_parameter: 40'
, '> *blah*2.my_parameter: 30'
, '> *2.my_parameter: 40'
)
$reg = [Regex]::new('\*[\w.]+:')
$test | group {([Regex]::Match($_, $reg)).Value} | % {($_.group | sort le*)[-1]}
输出
> *blah*1.my_parameter: 30
> *blah*2.my_parameter: 30
推荐阅读
- kubernetes - 用于 Ingress 中客户端证书身份验证的 CA 证书轮换
- python - Conda 解决安装 `xeus-cling`
- pytorch - 如何处理 Pytorch Geometric 中未标记的节点?
- python - 乘法向量中的操作“@”给出语法错误
- android - 每个 Activity 中的 NavigationDrawer
- c++ - Visual Studio 2019 调试器进入头文件而不是 cpp
- python - 如何在不使用拆分的情况下使用 scikit-learn 线性回归?
- anaconda - 如何在 ipython 中从文件夹手动安装 pyaudio 库
- css - 在css中缩放时如何摆脱边线?
- ios - 当应用程序位于同一个 git 存储库 - iOS 时,如何链接框架?