如果你必须有颜色,那么你将不得不做一些丑陋的事情:
$ git diff --color web-app/db/schema.rb |grep '^^[\[32m+
Run Code Online (Sandbox Code Playgroud)
这^[
实际上是一个原始转义字符(Ctrl+V ESC在 bash 中,ASCII 27)。您可以使用cat -v
来找出必要的转义序列:
$ git diff --color web-app/db/schema.rb |cat -v
^[[1mdiff --git a/web-app/db/schema.rb b/web-app/db/schema.rb^[[m
^[[1mindex 45451a2..411f6e1 100644^[[m
^[[1m--- a/web-app/db/schema.rb^[[m
^[[1m+++ b/web-app/db/schema.rb^[[m
...
Run Code Online (Sandbox Code Playgroud)
这种事情对于 GNU 版本的sed
, awk
, ... YMMV 和非 GNU 版本都可以很好地工作。
更简单的方法是关闭着色:
$ git diff --no-color file
Run Code Online (Sandbox Code Playgroud)
但是你可以用漂亮的输出来换取稍微难看的正则表达式。