Я пытаюсь получить номер строки для вновь добавленных, измененных и удаленных строк из git repo из предыдущего коммита. Я использую функцию bash ниже, чтобы выполнить эту работу. Но я не могу получить значение пути (он показывает null), и мои номера строк также не точные, что я ожидаю .please проверьте мой результат ниже.Как получить Git измененные, удаленные и новые номера строк
diff-lines() {
local path=
local line=
while read; do
esc=$'\033'
if [[ $REPLY =~ ---\ (a/)?.* ]]; then
continue
elif [[ $REPLY =~ \+\+\+\ (b/)?([^[:blank:]$esc]+).* ]]; then
path=${BASH_REMATCH[2]}
elif [[ $REPLY =~ @@\ -[0-9]+(,[0-9]+)?\ \+([0-9]+)(,[0-9]+)?\ @@.*]]; then
line=${BASH_REMATCH[2]}
elif [[ $REPLY =~ ^($esc\[[0-9;]+m)*([\ +-]) ]]; then
echo "$path:$line:$REPLY"
if [[ ${BASH_REMATCH[2]} != - ]]; then
((line++))
fi
fi
done
}
Я получаю ниже выхода Когда я запустить скрипт
$ git diff -U0 | diff-lines
::+++ b/shipserv/shipserv.cpp
:1:-
:1:-// check command-line args
:1:+// check command-line argsss
:2:+++ b/shipserv/shipserv_client.cpp
:3:-// #include <infra/utility/environment/config/PimpConfig.h>
:3:+// #include <nfra/utility/environment/config/PimpConfig.h>
:4:+++ b/shipserv/test.text
:5:-dfssdfsdfsdfsf
:5:+dfssdfsdfsdfsfZZZZZZZZZZZZZZ
:6:+modified linsde 9898989
:7:+New line added
может кто-нибудь, пожалуйста, помогите мне по этому вопросу.