Quantcast
Channel: PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources
Viewing all articles
Browse latest Browse all 6937

My script needs to be more flexible

$
0
0

Good Morning and Good Afternoon,

 

I am extremely new to scripting with powershell. I actually don't  even have any formal training in scripting other than what I have  learned through the web.  My boss asked me to create a script that would go through a log file and extract data based on a pattern.  

For example, my log file looks something like this: 

 

"(09:20:35.63300) SLS(1244.13): Total 0.01126 (s), Query 0.01096 (s), 1 hits for User=cryst1t,'Query=FTP,Country=CAN,Asset=
EQUITY,FUTURE,FOREX,INDEX,Exact=False'
(09:21:01.74700) SLS(1244.5): Total 0.01840 (s), Query 0.01816 (s), 1 hits for User=a'Query="ITGID"="SYD.AX",Countr
y=AUS,Asset=EQUITY,Exact=True'
(09:21:01.72800) SLS(1244.5): Total 0.01331 (s), Query 0.01295 (s), 1 hits for User=,'Query="ITGID"="ALQ.AX",Countr
y=AUS,Asset=EQUITY,Exact=True'
(09:20:45.56100) SLS(1244.11): Total 0.01039 (s), Query 0.00996 (s), 1 hits for User='Query="ITGID"="SBAC",Countr
y=USA,Asset=,Exact=True'"

 

I was able to create a script that removes everything from total and query and compute the max min count and average 

 

my script looks like this 

$a  = (Get-Content C:\Users\jmateo\TestProjects\SLS_Test.txt) | Select-String -Pattern  "total" 
$a2 = (($a -replace(".*:",""))-replace("hits for.*", ""))-replace("total", " ")-replace("query", "")-replace('[(s)]', "")
$a3 = ConvertFrom-Csv -InputObject $a2 -Delimiter "," -Header Totals, Query | Measure-Object -Average Totals, Query -Maximum -Minimum -Sum 
$a3 | Format-Table -AutoSize -Expand Both -Force -Wrap

 

the output looks like this , which is exactly what I want, but this script is not flexible enough to really sort through another text file and do the same

 

Count            Average              Sum Maximum Minimum Property
-----            -------              --- ------- ------- --------
 3501 0.0137331905169952 48.0799000000001 0.90181 0.00017 Totals  
 3501 0.0132653413310483         46.44196 0.90109       0 Query  

 

 

 

I went ahead and created a new script that does the following 

Param(
  [string]$enter_path, [string]$Select_Filter)
  $Enter_path = Read-Host "Please Enter the File Path"
$select_filter = read-host "Please enter filter"
$object = Get-Content $enter_path | select-string -pattern $Select_Filter 
$object

 

Here, I am asking a user to  enter a path name followed by a filter which in this case if I want to just find all instances that have the word "total" when I run this I get something like this:    

"User=,'Query=""="CAG",Country=USA,Asset=,Exact=True'
(13:07:57.01700) SLS(1244.5): Total 0.00078 (s), Query 0.00045 (s), 1 hits for 
User=,'Query=""="MAA",Country=USA,Asset=,Exact=True'
(13:07:57.01900) SLS(1244.5): Total 0.00044 (s), Query 0.00024 (s), 1 hits for 
User=,'Query=""="SYK",Country=USA,Asset=,Exact=True'
(13:08:04.31000) SLS(1244.5): Total 0.04163 (s), Query 0.04121 (s), 4 hits for User=,'Query="ISIN"="US6026751007" "TICKER"="MR" 
"SEDOL"="B1FCP24" "CUSIP"="602675100",Country=USA,Asset=EQUITY,Exact=False'"

 

This works if I just want to search for a word, but my question is how can I make this script flexible enough to basically grab the numerical value that comes after total and query like my first script except with all of the -replace(), because I just my script through read through data and grab and filter out 

 

The file is a .txt. It is basically one string. I figured  out that if  I could tab or comma delimit the file I could simply specify a header and do my my computations, but the problem is is that the log file does not have equal parts, so how would I be able to divide this log file into equal parts with equal headers, so that I could just select the header with numerical values and do my computations. I been working on this for three weeks, but feel I do not know enough to create a more flexible script that does use -remove

 

thanks,

Jeff


Viewing all articles
Browse latest Browse all 6937

Trending Articles