计数值为相同的ID
我是新的Powershell和我试图自动化一个单调乏味的任务,我通常会做,并会真的很感激它,如果你能够帮助我或给任何想法如何完成我目标。计数值为相同的ID
基本上我有一个CSV文件看起来是这样的:
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}}
谢谢你的帮助。我想,我得到的输出只是所有名称的Message_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
谢谢! :)我要测试这一个。 –
我已经编辑我的问题。我忘了包括我的数据中有其他列。 –