For your particular example:
> help grep
Name Category Module Synopsis
---- -------- ------ --------
Out-File Cmdlet Microsoft.PowerShell.U... Sends output to a file.
Select-String Cmdlet Microsoft.PowerShell.U... Finds text in strings and files.
Okay, so Select-String sounds really promising. Let's take a look. > help select-string
NAME
Select-String
SYNOPSIS
Finds text in strings and files.
SYNTAX
Select-String [-Pattern] <String[]> [-Path] <String[]> [-AllMatches] [-CaseSensitive] [-Context
[<Int32[]>]] [-Encoding {unicode | utf7 | utf8 | utf32 | ascii | bigendianunicode | default | oem}]
[-Exclude [<String[]>]] [-Include [<String[]>]] [-InformationAction {SilentlyContinue | Stop | Continue |
Inquire | Ignore | Suspend}] [-InformationVariable [<System.String>]] [-List] [-NotMatch] [-Quiet]
[-SimpleMatch] [<CommonParameters>]
Most of those command flags seem really straightfoward to me. Can you be more specific about what was unclear to you? I'd be happy to help.EDIT: BTW, it's a bit annoying to type Select-String, so it'd be nice if it had an alias. Does it have one?
Well, you can get aliases in PowerShell by typing alias. But that'll give you a wall of text; what you want to do is to quickly search for things that are aliased to Select-String.
There are two ways to do this. First, you can pipe to a GUI that allows directly filtering the results:
> alias | out-gridview
Or, alternatively, we can figure out what objects alias gives us: > alias | select -first 1 | get-member
Note that we've got a Definition field, and query on that: > alias | Where-Object { $_.definition -contains 'Select' }
which is a long version of > alias | ? { $_.definition -contains 'Select' }
And notice that Select-String is aliased to sls by default. Note that I can just reference the column by name, rather than going through some awk/cut fun.You might be annoyed that Select-String is not aliased to grep. While many commands actually do have multiple aliases to both DOS and Unix equivalents (e.g., Get-ChildItem is aliased to gci, dir, and ls, and Remove-Item has ri, rm, and del as aliases), Select-String works differently enough from grep that it's not a default alias so you're not confused.