我有一個存盤在這里的檔案串列:
FILES_CHANGE=(git diff --name-only --cached)
這檢索例如:
test.txt
home/a/c/test.sh
test/s.cpp
我只需要獲取帶有根目錄名稱的事件。在上面的示例中將是:
home
test
我怎么能用 bash 做到這一點?有沒有可能單線sed?
uj5u.com熱心網友回復:
另一種選擇使用切:
git diff --name-only | cut -d '/' -f1
本地示例:
$ git --no-pager diff --name-only
src/API/Api.php
src/Commands/Data/Data.php
$
$
$ git diff --name-only | cut -d '/' -f1
src
src
$
uj5u.com熱心網友回復:
您可以通過管道awk獲取所需的輸出:
git ... | awk -F/ 'NF>1 {print $1}'
home
test
要在 BASH 4 中填充陣列,請使用:
readarray -t ary < <(git ... | awk -F/ 'NF>1 {print $1}')
uj5u.com熱心網友回復:
awk 的吸引力在于您還可以輕松排除重復項。
git diff --name-only | awk -F/ 'NF>1 && (!a[$1] ) { print $1 }'
uj5u.com熱心網友回復:
使用sed
$ git diff --name-only | sed -n 's|\(^[^/]*\)/.*|\1|p'
home
test
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/477870.html
