Bash 如何使sed输出报价?

Bash 如何使sed输出报价?,bash,git,sed,Bash,Git,Sed,我正在尝试创建一个git别名,该别名将输出用于构建git别名的命令 到目前为止,我有这个 git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global \1 \2/' 产生 git config --global alias.lg log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %

我正在尝试创建一个git别名,该别名将输出用于构建git别名的命令

到目前为止,我有这个

git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global \1 \2/'
产生

git config --global alias.lg log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
git config --global alias.pu !git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)
git config --global alias.puf !git push --force --set-upstream origin $(git rev-parse --abbrev-ref HEAD)
git config --global alias.r !git fp && GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash origin/HEAD
git config --global alias.fr !git fp && git pull --rebase origin HEAD
git config --global alias.fp fetch --prune
git config --global alias.ac !git add -A && git commit
git config --global alias.amend commit --amend -a --reuse-message=HEAD
git config --global alias.remaster rebase -i origin/HEAD
git config --global alias.rh rehead
git config --global alias.rehead !git fetch && git checkout origin/HEAD -b
我尽可能地

git config --global alias.aliases '!'"git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global \1 '\''\2'\''/'"
但是最后一个生成的代码不能正常工作,我认为它缺少了一个引用

git config --global alias.aliases '!git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global \1 '\''\2'\''/''

因为您的命令使用单引号,所以在参数周围使用
'\'
将它们括在引号中

... config --global '\''\1 \2'\''/'
git-config--global--get regexp别名。*| sed's/\(别名\..[^]\+\)\(.*\)/git-config--global'\'''''\1\2'\''''/'
有关单引号转义的更多信息:


小输出示例:

$ git config --global alias.co checkout      # Create simple alias
$ git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global '\''\1 \2'\''/'

git config --global 'alias.co checkout'

如果您在单引号中引用某个内容,请使用此序列
'\''
,这将结束现有的单引号,插入带引号的单引号并打开另一个单引号。在sed语句周围使用双引号而不是单引号,然后您应该能够在替换文本中使用单引号。投票结束,因为单引号的答案已完成。即使它没有解决用例的最后一部分,也就是将输出作为另一个git配置的一部分。
$ git config --global alias.co checkout      # Create simple alias
$ git config --global --get-regexp alias.* | sed 's/\(alias\.[^ ]\+\) \(.*\)/git config --global '\''\1 \2'\''/'

git config --global 'alias.co checkout'