Powershell 相同ID的计数值
我是Powershell的新手,我正在尝试自动完成一项我通常会做的繁琐任务,如果您能帮助我或给出如何实现我的目标的任何想法,我将不胜感激 基本上我有一个CSV文件,看起来像这样:Powershell 相同ID的计数值,powershell,Powershell,我是Powershell的新手,我正在尝试自动完成一项我通常会做的繁琐任务,如果您能帮助我或给出如何实现我的目标的任何想法,我将不胜感激 基本上我有一个CSV文件,看起来像这样: Name | Message | Date | Time ------ | ------ | ------ | ----- John | Good | 1/1/2001 | 1:00 PM John | Bad | 1/2/2002 | 2:00 AM Frank | Bet
Name | Message | Date | Time
------ | ------ | ------ | -----
John | Good | 1/1/2001 | 1:00 PM
John | Bad | 1/2/2002 | 2:00 AM
Frank | Better | 1/3/2003 | 3:00 PM
Frank | Best | 1/4/2004 | 4:00 AM
Mike | Great | 1/5/2005 | 5:00 PM
Mike | Perfect | 1/6/2006 | 6:00 AM
Mike | Awesome | 1/7/2007 | 7:00 PM
Name | Message_Count
------ | ------
John | 2
Frank | 2
Mike | 3
我试图实现的输出将如下所示:
Name | Message | Date | Time
------ | ------ | ------ | -----
John | Good | 1/1/2001 | 1:00 PM
John | Bad | 1/2/2002 | 2:00 AM
Frank | Better | 1/3/2003 | 3:00 PM
Frank | Best | 1/4/2004 | 4:00 AM
Mike | Great | 1/5/2005 | 5:00 PM
Mike | Perfect | 1/6/2006 | 6:00 AM
Mike | Awesome | 1/7/2007 | 7:00 PM
Name | Message_Count
------ | ------
John | 2
Frank | 2
Mike | 3
到目前为止,我只能删除重复的邮件,但我不知道如何计算相应名称上的邮件。此代码可以帮助您
Import-Csv <CSV File> |
Group-Object Name |
Select-Object @{Name='Name'; Expression={$_.Values[0]}},
@{Name='Message_Count'; Expression={$_.Count}}
假设输入文件正是您显示它的方式,那么我们需要做一些工作,将其转换为PowerShell可以识别为CSV的格式。我已经修改了mfatih的代码来实现这一点:
Get-Content file.txt |
% { $_ -replace "\s*\|\s*","|" } | # Get rid of the spaces around the fields
ConvertFrom-Csv -Delimiter '|' | # Use "|" as the delimiter.
? Name -notmatch '^-+$' | # Skip the "------" row.
Group-Object Name |
Select-Object @{Name='Name'; Expression={$_.Values[0]}},
@{Name='Message_Count'; Expression={$_.Count}}
输出:
Name Message_Count
---- -------------
John 2
Frank 2
Mike 3
下面的代码片段也给出了相同的结果
import-csv 'Input Path' | Group-Object Name | Select-Object Name,count
我已经编辑了我的问题。我忘了包括我的数据还有其他列。谢谢你的帮助。我得到的输出只是所有名字的消息总数。谢谢!:我要试试这个。谢谢!:我要测试一下这个。