我正在尝试编写一个sed命令,因此它会在字符串的开头替换一个可能的星号(这是为了同时重命名一堆git分支)。
我的git branch
会返回与以下内容类似的行:
old-12345
* old-23456
old-34567
master
我希望sed输出上面输出的每一行,其中包含旧的:
new-12345
new-23456
new-34567
我认为以下其中一项可行:
$ echo "* old-12345" | sed 's/\*?\s*old-\(\d*\)/new-\1/'
$ echo "* old-12345" | sed 's/[*]?\s*old-\(\d*\)/new-\1/'
但遗憾的是它没有做任何事情。我想要\*?
或[*]?
,因为git branch
只会将*
放在我当前所在的分支旁边。为什么?
没有像我期望的那样工作?
答案 0 :(得分:1)
试试这个
echo "* old-12345" | sed 's/.*old-\(\d*\)/new-\1/'