I suspect you haven&#x27;t read the documentation or tried using PowerShell for any length of time. PowerShell may be bash-like, but it&#x27;s not bash, does not try to be bash, and won&#x27;t reward you if you treat it like bash. But it&#x27;s very orthogonal, clean, and well documented.<p>For your particular example:<p><pre><code>    &gt; 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.
</code></pre>
Okay, so Select-String sounds really promising. Let&#x27;s take a look.<p><pre><code>    &gt; help select-string

    NAME
        Select-String

    SYNOPSIS
        Finds text in strings and files.


    SYNTAX
        Select-String [-Pattern] &lt;String[]&gt; [-Path] &lt;String[]&gt; [-AllMatches] [-CaseSensitive] [-Context
        [&lt;Int32[]&gt;]] [-Encoding {unicode | utf7 | utf8 | utf32 | ascii | bigendianunicode | default | oem}]
        [-Exclude [&lt;String[]&gt;]] [-Include [&lt;String[]&gt;]] [-InformationAction {SilentlyContinue | Stop | Continue |
        Inquire | Ignore | Suspend}] [-InformationVariable [&lt;System.String&gt;]] [-List] [-NotMatch] [-Quiet]
        [-SimpleMatch] [&lt;CommonParameters&gt;]
</code></pre>
Most of those command flags seem really straightfoward to me. Can you be more specific about what was unclear to you? I&#x27;d be happy to help.<p>EDIT: BTW, it&#x27;s a bit annoying to type Select-String, so it&#x27;d be nice if it had an alias. Does it have one?<p>Well, you can get aliases in PowerShell by typing alias. But that&#x27;ll give you a wall of text; what you want to do is to quickly search for things that are aliased to Select-String.<p>There are two ways to do this. First, you can pipe to a GUI that allows directly filtering the results:<p><pre><code>    &gt; alias | out-gridview
</code></pre>
Or, alternatively, we can figure out what objects alias gives us:<p><pre><code>    &gt; alias | select -first 1 | get-member
</code></pre>
Note that we&#x27;ve got a Definition field, and query on that:<p><pre><code>    &gt; alias | Where-Object { $_.definition -contains &#x27;Select&#x27; }
</code></pre>
which is a long version of<p><pre><code>    &gt; alias | ? { $_.definition -contains &#x27;Select&#x27; }
</code></pre>
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&#x2F;cut fun.<p>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&#x27;s not a default alias so you&#x27;re not confused.