PowerShell 中的 grep 和 sed 等价物

grep and sed equivalent in PowerShell

我正在尝试在 PowerShell 中执行以下语句

svn info filename | grep '^Last Changed Date:'| sed -e 's/^Last Changed Date: //'

我试过这个:

svn info filename | Select-String '^Last Changed Date:'

我期望低于输出

2018 年 12 月 20 日星期四 4:50:40 上午

使用 -match-replace operators:

(svn info filename) -match '^Last Changed Date:' -replace '^Last Changed Date: '

要删除前导标签,您可以使用具有 RegEx 模式的捕获组。

svn info filename | Select-String '^Last Changed Date: (.*)$' | ForEach-Object{$_.Matches.Groups[1].Value}

或者在没有匹配的情况下采用 Ansgars 方法(并重复标签)

(svn info filename) -replace "(?sm).*?^Last Changed Date: (.*?)$.*","`"

这可能是在回避问题,但您可以通过从现有 git 安装中导入它们来在 powershell 中使用 sedgrep 语句。

如果已安装,C:\Program Files\Git\usr\bin 包含您要查找的相当不错的语句选择,例如 sed.exe。您可以为它们设置一个别名,并按照您习惯的方式使用它们:

Set-Alias -Name sed -Value C:\"Program Files"\Git\usr\bin\sed.exe

您可以在配置文件中定义这些别名以保留它们。创建一个名为 C:\Users\*UserName*\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 的文件,并允许在具有管理员权限的 powershell 中执行脚本,方法是调用:

set-executionpolicy remotesigned