$ | >

Windows needs built-in version of *NIX tools like grep/sed/awk etc.

Lot of them are BSD licensed too, so MS can include as is. Also, inputrc support! I will never look at Linux again I swear

248 votes
Sign in
or sign in with
  • facebook
  • google
    Password icon
    Signed in as (Sign out)

    We’ll send you updates on this idea

    thark shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →


    Sign in
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      • Julian Knight commented  ·   ·  Flag as inappropriate

        I agree with others that more should be done to standardise cmd.exe & PowerShell commands around some of the key Linux/BSD commands. grep & set amongst them.

        In addition, some of the existing PowerShell equivalents like ls and wget really need to be brought more into line with their bash equivalents.

        Finally, PowerShell REALLY needs to get "&&" support - this has been requested for years! It is a major impediment to the adoption of PowerShell on any platform.

      • mobluse commented  ·   ·  Flag as inappropriate

        Here is a real world example of that I need sed in Cmd.exe. I used sed in Windows Vista.

        This creates a bat-file that downloads videos.

        I think you should also have awk, because I used that with Windows 95 in order to create automatic translations of files for some system.

        I think Perl and CPAN will not be necessary in Cmd.exe for ordinary users, because routers often have Awk and Sed built-in, but not more programming languages. Grep is probably needed, but that is not a programming language AFAIK.

        You could hunt around the Internet for these tools, but it would be easier and safer if they were built-in. Every one can't install from e.g. http://gnuwin32.sourceforge.net/ or Ubuntu for WSL from Store. E.g. in many schools and libraries you can't run setup-programs or switch on WSL. I think you should use BSD-versions of these tools, because then Cmd.exe will be a bit like Mac OS X, and the BSD-licence probably fits Microsoft better. Cmd.exe will then not compete that much with e.g. Ubuntu for WSL, but complement it.

        You already have curl and tar (i.e. bsdtar), which is great.

      • Sumit Gupta commented  ·   ·  Flag as inappropriate

        yes, inclusion of Bash is additional developer tool and it is not necessary to have it installed in core windows. So a core command like that are always welcome.

      • Ariel Jacobs commented  ·   ·  Flag as inappropriate

        > With the advent of Bash on Ubuntu on Windows, do you still feel there’s a need for grep/sed/awk on Windows?

        Yes, in that there really shouldn't be two shells on Windows, but one that does everything I need to. I am comfortable with the Windows shell, but would like to run many of the programs from it that there aren't great alternatives to yet.

      • Felix Becker commented  ·   ·  Flag as inappropriate

        Powershell has many aliases that mirror the Linux commands. For example, ls os an alias for Get-ChildItem, man for Get-Help, rm etc. You have autocompletion for commands, arguments and paths and arguments can be passed as abbreviations, name, position, case insensitive.

      • Natan Vivo commented  ·   ·  Flag as inappropriate

        Honestly, although powershell has these features, I still prefer grep for 2 reasons: 1: powershell commands are too long to type and are really hard to remember, the syntax is terrible and 2: I switch between linux and windows all the time, and using the same tools on windows is just easier.

        Powershell has a huge usage barrier still today on windows 10. Shift-right click shows command prompt, not powershell. "cmd" is faster to type than "powershell", most shortcuts created by tools like VS Developer Command prompt, Node command prompt, MSBuild command prompt, all default to cmd. cmd is everywhere, powershell is something we need to remember to call, and still today requires effort to enable running scripts.

        But I discovered gow (https://github.com/bmatzelle/gow), I have been able to use all the tools I wanted like grep, vim, etc.

        I don't believe Ms should create their version anymore, but would be great if they just adopted a project like gow (like you did with git for windows) and just bundled that into windows directly. It's already there and it works great.

      • Simpson Bart commented  ·   ·  Flag as inappropriate

        I thought these have been long ported. I have wc added to my path along with ls, sed and grep. Why is this a thing?

      • Brandon Paddock commented  ·   ·  Flag as inappropriate

        Well, in some cases Windows already has equivalents, like findstr instead of grep. Of course, more tools could be useful, and having the same (or compatible) tools as other platforms has advantages as well.

      • burnnnn commented  ·   ·  Flag as inappropriate

        patch, m4 **** even make if at all possible!

        The reason why? Cross-Platform development. becomes 100x easier as I can just use cmd instead of having to install msys2/Cygwin every time.

      • deandownsouth commented  ·   ·  Flag as inappropriate

        @Anonymous So PS can do all the text parsing that grep, sed, awk, troff ? If true, I'd like to see the command.

        And for the other @Anonymous, you must not ever have to deal with log files. As an Administrator/Engineer/whatever, you live for log files. Log files are still largely text. Then there are the many other outputs to commands that we need to take action on. Having someone sitting there looking at that is not how we do it. Inexperienced admins will simply open up notepad.exe and copy/paste and so on. Wasting time. Why wouldn't I use text parsing tools? Can PS really replace grep, sed, awk, troff/nroff, sort, cut, join, paste, uniq...and so many more?

        @Don Cruickshank No, these utilities are used because they are simple and yet powerful.

        @Keith Hill OK, so Invoke-WebRequest can do everything that wget can do? I'll have to take a look.

      • deandownsouth commented  ·   ·  Flag as inappropriate

        For those of you who use Cygwin, there are standalone Win32 ports of numerous *nix utilities (grep, cat, sed, awk, etc.). These are standalone executables so no need to install anything. Make sure you download both unixutils.zip and unixupdates.zip to get them all (link: http://unxutils.sourceforge.net/ ). Other things like nmap, nc (netcat), vi, etc. are available at other locations. The point is even though a lot of these can now be done in PS, sometimes you just want an executable out in cmd.exe to run. Options folks, it's about options.

      • Natan Vivo commented  ·   ·  Flag as inappropriate

        Instead of having a single "Telnet client" in windows feature dialog, have a "Additional command line tools" that include ssh, grep, less, md5sum, sha1sum and other basic tools that we use everyday in terminals.

      • Steve Lee commented  ·   ·  Flag as inappropriate

        Cygwin offers a reasonable solution (with terrible installer). MinGW is native but it's fixed path conversion huristics can be a deal breaker. So a native solution supplied by MS would be wlecome.

        Why oh why did someone choose command switch as / and separate file trees? That and EOL are still major pain points after all these years.

      • Keith Hill commented  ·   ·  Flag as inappropriate

        @Anonymous I agree. PowerShell is so much more, well, Power-ful. As for wget, in PowerShell that is Invoke-WebRequest.

      • Don Cruickshank commented  ·   ·  Flag as inappropriate

        Adding the typical UNIX tools would be a step backwards.

        I appreciate that for some it would allow them to perform tasks because they are familiar with those tools and not PowerShell but for these scenarios there is Cygwin, etc.

      • Anonymous commented  ·   ·  Flag as inappropriate

        Sure, lets fall back to text parsing, when you have a fully OO shell in PowerShell. Just because al the cool kids were doing it in 1970

      Feedback and Knowledge Base