Powershell‎ > ‎Stuff‎ > ‎

Format Conversation Data




get-help -Full about_reg* | less -i
"B550410S01" -match "b\d{2}......."

 

Format Conversation Data

07/28/2012 14:11:13 John Doe: hi guys
07/28/2012 14:11:17 Jane Doh: hi

$Conversation = Get-Content C:\Scripts\Conversation.txt

$DateTimePatern = "^\d{2}/\d{2}/\d{4}\s{1}\d{2}:\d{2}:\d{2}\s{1}"
$Messages =@()

foreach ($line in $Conversation)
{
	#check if the line starts with a datestamp
	if ($line -match $DateTimePatern)
	{
		#Write previous line
		if ($Message.DateTime -ne $null)
		{
			$Messages += $Message
		}
		#Add new values
		$Message = {} | Select "DateTime","Person","MessageData"
		#Reformat Date from MM/DD/YYYY to DD/MM/YYY
		$Message.DateTime = ($line.substring(0,19) -replace "(\d+)/(\d+)/(\d+)", '$2/$1/$3')
		$Message.Person = $line.substring(20).split(":")[0]
		$Message.MessageData = $line.substring(20 + $Message.Person.Length + 2)	
		
	}
	else
	{
		#add extra lines that do not begin with a datestamp to messagedata sepearate by a space
		$Message.MessageData += " $line"
	}
}

$Messages | Export-Csv -NoTypeInformation C:\Scripts\Conversation.csv

#$Messages | Group-Object -Property Person | sort -desc count | select count, Name


  
Comments