我正在構建一個自動化預執行腳本based in the Carlos Buenos Vinos tutorial,但是BIG問題是:我在一個在開發計算機中使用Windows的公司工作(我知道我知道但我不能對此無所作爲)。Windows中的EGREP和AWK等效命令
腳本有以下方法:
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上運行這個命令/擊:
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
謝謝能跟大家
我可以。但我試圖自動完成這項任務,因爲我們有其他開發人員,而這個想法是版本腳本,可以在沒有任何額外的手動任務的情況下完成這項工作。我接近命令** git ls-files -m **,但沒有用於添加文件的選項-a :( –
egrep命令只允許那些以A或M開頭的行。awk命令只是打印「第二列」是文件名,因此你可以添加或修改文件 –
修改你自己的程序來執行該部分不應該很困難 - 跳過不以'A'或'M'開始的行, ;跳過第一個字段和後面的空白字符,並從該行的其餘部分收取文件名(Awk腳本對於名稱中帶有空格的任何文件名都不起作用) – tripleee