我想用下划线 ( ) 替换分支名称中的空格 ( ) 字符
_
。例如,假设我有一个sedtest文件,其中包含:
Node-path: trunk/
Node-path: trunk/src/lib 0
Node-path: trunk/src/lib 0/bla.txt
Node-path: branches/ branch0-blabla_blabla/src
Node-path: branches/ branch0-blabla_blabla
Node-path: branches/branch1 stuffthing
Node-path: branches/branch1 stuffthing/src/lib 0
Node-path: branches/branch1 stuffthing/src/lib 0/bla.txt
Node-path: branches/branch2stuffthing/src/lib 0/bl a.txt
我希望它像这样修改:
Node-path: trunk/
Node-path: trunk/src/lib 0
Node-path: trunk/src/lib 0/bla.txt
Node-path: branches/_branch0-blabla_blabla/src
Node-path: branches/_branch0-blabla_blabla
Node-path: branches/branch1_stuffthing
Node-path: branches/branch1_stuffthing/src/lib 0
Node-path: branches/branch1_stuffthing/src/lib 0/bla.txt
Node-path: branches/branch2stuffthing/src/lib 0/bl a.txt
我遇到的问题与此 SO question中描述的问题类似。但是,该问题要求替换路径中的所有空格。我只想替换分支名称中的空格。
从另一个问题,我已将sed
命令修改为:
sed '/^Node-path: branches\//s/ /_/2' < sedtest
但它也将最后一行修改为Node-path: branches/branch2stuffthing/src/lib_0/bl a.txt
,应该保持不变。我的经验sed
非常有限,我无法将“搜索区域”适当地限制在branches/
以下之间/
或之间$
,以先到者为准。我正在使用 CentOS 7。
至于我要完成的工作:我正在尝试将我们的 SVN 存储库移植到 git 上,根据SO 上的这个答案和我的个人经验,git 分支名称中不能有空格。我正在尝试按照svnbook.red-bean.com 上的建议通过 svn 转储来解决此问题。
我想我可以 grep 所有有问题的分支并手动替换字符串,但这会不那么通用,工作量更大,而且娱乐性也少得多。