[英]EGREP and AWK equivalent command in Windows
我正在基于Carlos Buenos Vinos教程构建一个自动化的预提交脚本,但是最大的问题是:我在一家在开发计算机中使用Windows的公司工作(我知道我知道,对此我无法采取任何措施。对)。
该脚本具有以下方法:
private function extractCommitedFiles()
{
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
$against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
if ($rc == 0) {
$against = 'HEAD';
}
// unix / linux
// exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
// windows
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
return $output;
}
那么...有人对波纹管的等效命令有任何想法吗?
exec("git diff-index --cached --name-status $against | egrep '^(A|M)' | awk '{print $2;}'", $output);
如果我在UNIX / Bash中运行此命令,则必须得到以下结果:
core/web/favicon.ico
core/web/htaccess.txt
core/web/index.html
core/web/slim.php
core/web/swagger/css/print.css
core/web/swagger/css/reset.css
core/web/swagger/css/screen.css
core/web/swagger/css/style.css
core/web/swagger/css/typography.css
core/web/swagger/fonts/DroidSans-Bold.ttf
但是使用exec('......而没有egrep和awk命令,我得到以下结果:
A core/web/htaccess.txt
A core/web/index.html
A core/web/slim.php
A core/web/swagger/css/print.css
A core/web/swagger/css/reset.css
A core/web/swagger/css/screen.css
A core/web/swagger/css/style.css
A core/web/swagger/css/typography.css
A core/web/swagger/fonts/DroidSans-Bold.ttf
谢谢你们!
首先,该命令是一个不好的例子。 几乎没有必要在同一管道中使用grep
和awk
,因为awk
功能要强大得多。 因此,该命令应缩短为
awk '/^(A|M)/ {print $2}'
其次,即使这是一个不好的例子,因为git diff-index
具有各种输出选项,包括--name-only
和--diff-filter
,它们可以组合为
git diff-index --cached --name-only --diff-filter=AM $against
您可以下载Windows版本的工具,然后将bin文件夹添加到PATH变量中。
http://gnuwin32.sourceforge.net/packages/gawk.htm http://gnuwin32.sourceforge.net/packages/grep.htm
对于“ egrep”,可以使用“ grep -E”。 在您的情况下,“ gawk”将完全像“ awk”一样完成工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.