簡體   English   中英

Windows中的EGREP和AWK等效命令

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

謝謝你們!

首先,該命令是一個不好的例子。 幾乎沒有必要在同一管道中使用grepawk ,因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM