hg bookmarks --delete
可用于删除书签。
我是否可以通过某些bash脚本删除Mercurial存储库中的所有书签?我认为使用awk可以实现这一点-但这超出了我。
hg bookmarks
输出的格式为(例如):
2018.02.706 Customer App 5255:c1321f7f3903
2018.02.707 Customer App 5255:c1321f7f3902
我只需要得到:
2018.02.706 Customer App
2018.02.707 Customer App
答案 0 :(得分:2)
这应删除最后一个字段:
awk 'NF{NF--}1' file
这只是将最后一个字段设置为空:
awk '{$NF=""}1' file
答案 1 :(得分:2)
我认为this solution(进行了一些可能所需的更正)比起警告:纯水星,仅此而已
答案 2 :(得分:1)
awk 'sub($NF,"")' file
2018.02.706 Customer App
2018.02.707 Customer App
答案 3 :(得分:1)
考虑到先前答复中的帮助,这是我用来删除水银书签的完整脚本:
htop
如果要确保删除前导空格和尾随空格,请使用以下内容:
hg bookmarks | awk 'NF' | awk 'sub($NF,"")' | awk '{print "hg bookmarks --delete \047" $0 "\047"}' > clear-bookmarks.sh
我的脚本编写经验无论如何都不是很好-但这似乎可以做到!
答案 4 :(得分:1)
如果您确实只想删除所有书签,则只需从存储库的隐藏.hg/bookmarks
目录中删除.hg
文件即可。
如果您将书签从远程位置拉出,书签可能会回来,因此您还必须执行hg book push -B 'your bookmark name'
来从远程位置删除书签,但这对于任何人来说都是一个问题。其他删除书签的方法。
答案 5 :(得分:0)
假设输入中的空格为示例输入中出现的空白字符,则可移植且可靠地执行您在问题中要执行的操作:
$ sed 's/ [^ ]*$//' file
2018.02.706 Customer App
2018.02.707 Customer App
要获得输出,your answer中的命令行将产生:
$ sed 's/\(.*\) .*$/hg bookmarks --delete '\''\1'\''/' file
hg bookmarks --delete '2018.02.706 Customer App'
hg bookmarks --delete '2018.02.707 Customer App'
如果您强烈渴望使用awk,那就应该是:
$ awk '{sub(/ [^ ]+$/,"")}1' file
2018.02.706 Customer App
2018.02.707 Customer App
$ awk '{sub(/ [^ ]+$/,""); print "hg bookmarks --delete \047" $0 "\047"}' file
hg bookmarks --delete '2018.02.706 Customer App'
hg bookmarks --delete '2018.02.707 Customer App'
如果示例中的空格可以是单个空格以外的其他空格,请用/ [^ ]+$/
替换/[[:space:]]+[^[:space:]]+$/
。