2016-11-10 53 views
0

我想要的是一個腳本shell,它遍歷git status命令的每一行命令, 查找已修改的文件併爲每個文件路徑運行給定的命令。用於過濾git狀態命令的Linux Shell腳本

所以更具體, 鑑於這種輸出:

On branch master 
Your branch is up-to-date with 'origin/master'. 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     renamed: ASCourses-UI-vechi/src/application/Chat.fxml -> ASCourses-UI                                 /src/main/resources/fxml/ChatController.fxml 

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

     modified: ASCourses-UI-vechi/bin/.gitignore 
     modified: ASCourses-UI-vechi/bin/application/Chat.css 
     modified: ASCourses-UI-vechi/bin/application/Chat.fxml 
     modified: ASCourses-UI-vechi/bin/application/ChatController$1.class 
     modified: ASCourses-UI-vechi/bin/application/ChatController$2.class 
     modified: ASCourses-UI-vechi/bin/application/ChatController$3$1.class 
     modified: ASCourses-UI-vechi/bin/application/ChatController$3.class 
     modified: ASCourses-UI-vechi/bin/application/ChatController$4.class 
     modified: ASCourses-UI-vechi/bin/application/ChatController$5.class 

我要爲被修改,並與ASCourses-UI-vechi開始運行的每個文件git checkout file_path

我該怎麼到目前爲止,這是:

#!/bin/bash 
(IFS=' 
' 
for x in ` git status | grep -E 'modified.*ASCourses-UI-vechi' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'`; 
do 
echo $x; 
done) 

所以目前我過濾和修剪輸出,並獲得這樣的:

modified: ASCourses-UI-vechi/bin/.gitignore 
modified: ASCourses-UI-vechi/bin/application/Chat.css 
modified: ASCourses-UI-vechi/bin/application/Chat.fxml 
modified: ASCourses-UI-vechi/bin/application/ChatController$1.class 
modified: ASCourses-UI-vechi/bin/application/ChatController$2.class 
modified: ASCourses-UI-vechi/bin/application/ChatController$3$1.class 
modified: ASCourses-UI-vechi/bin/application/ChatController$3.class 
modified: ASCourses-UI-vechi/bin/application/ChatController$4.class 
modified: ASCourses-UI-vechi/bin/application/ChatController$5.class 

問題是我不知道如何從ASCourses字符串的第一次出現,直到串整串

回答

0

年底用awk:

[[email protected] ~]$ echo "modified: ASCourses-UI-vechi/bin/.gitignore" | awk '{print $2}' 
ASCourses-UI-vechi/bin/.gitignore 

使用SED:

[[email protected] ~]$ echo "modified: ASCourses-UI-vechi/bin/.gitignore" | sed 's/modified:\s\+//' 
ASCourses-UI-vechi/bin/.gitignore