Command-Line-Interface
匹配後的 grep 行直到結束
我有以下輸出,之後
git status
我該如何處理:grep``Untracked files
[alexus@wcmisdlin02 Test]$ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: app/.gitignore # new file: app/app.iml # new file: app/build.gradle # new file: app/proguard-rules.pro # new file: app/src/androidTest/java/org/alexus/test/ApplicationTest.java # new file: app/src/main/AndroidManifest.xml # new file: app/src/main/java/org/alexus/test/MainActivity.java # new file: app/src/main/res/layout/activity_main.xml # new file: app/src/main/res/menu/menu_main.xml # new file: app/src/main/res/mipmap-hdpi/ic_launcher.png # new file: app/src/main/res/mipmap-mdpi/ic_launcher.png # new file: app/src/main/res/mipmap-xhdpi/ic_launcher.png # new file: app/src/main/res/mipmap-xxhdpi/ic_launcher.png # new file: app/src/main/res/values-w820dp/dimens.xml # new file: app/src/main/res/values/dimens.xml # new file: app/src/main/res/values/strings.xml # new file: app/src/main/res/values/styles.xml # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore # .idea/ # Test.iml # build.gradle # gradle.properties # gradle/ # gradlew # gradlew.bat # settings.gradle [alexus@wcmisdlin02 Test]$
像這樣,但沒有指定行數,如
-A
GNU 中的參數grep
:[alexus@wcmisdlin02 Test]$ git status | grep -A100 'Untracked files' # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore # .idea/ # Test.iml # build.gradle # gradle.properties # gradle/ # gradlew # gradlew.bat # settings.gradle [alexus@wcmisdlin02 Test]$
有沒有辦法做到這一點?
[alexus@wcmisdlin02 Test]$ grep --version grep (GNU grep) 2.20 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>. [alexus@wcmisdlin02 Test]$
使用 GNU
grep
(使用 2.6.3 版測試):git status | grep -Pzo '.*Untracked files(.*\n)*'
用於
-P
perl 正則表達式,-z
也可以匹配換行符\n
並-o
僅列印與模式匹配的內容。正則表達式解釋:
首先,我們匹配任何字元 (
.
) 零次或多次 (*
),直到出現字元串Untracked files
。現在,括號內的部分(.*\n)
匹配除換行符 (.
) 零次或多次 (*
) 後跟換行符 ( ) 之外的任何字元\n
。而所有這些(在 backets 裡面)可以發生零次或多次;這就是 last 的意思*
。它現在應該匹配所有其他行,在第一次出現Untracked files
.