[英]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.