git splits
. Я создал его как расширение git, основанное на решении jkeating .
#change into your repo's directory
cd /path/to/repo
#checkout the branch
git checkout XYZ
#split multiple directories into new branch XYZ
git splits -b XYZ XY1 XY2
xyz
на GitHub, у которого есть путь: git@github.com:simpliwp/xyz.git
#add a new remote origin for the empty repo so we can push to the empty repo on GitHub
git remote add origin_xyz git@github.com:simpliwp/xyz.git
#push the branch to the empty repo's master branch
git push origin_xyz XYZ:master
#change current directory out of the old repo
cd /path/to/where/you/want/the/new/local/repo
#clone the remote repo you just pushed to
git clone git@github.com:simpliwp/xyz.git
Если я правильно понимаю ваш вопрос, то получается то, что вы хотите:
$ echo "AA" | xxd -b | sed -E 's/ 0| .*//g'
00000000:100000110000010001010
Ключевое изменение здесь - это использование двух пробелов перед .*
, так что это соответствует только той части, которую вы хочу удалить.
В качестве альтернативы, мы можем сначала удалить пустой ноль:
$ echo "AA" | xxd -b | sed -E 's/ 0//g; s/ .*//'
00000000:100000110000010001010
Попробуйте следующее:
s/ 0| [^0].*//g
Причиной наблюдаемого поведения является то, что POSIX управляет механизмами, чтобы они следовали самому длинному стандарту соответствия . Так что, пока вторая сторона чередования длиннее первой, даже если она вторая по порядку, она совпадает раньше.