Blog
Blog copied to clipboard
awk 用法理解
awk 理解
标签(空格分隔): shell
团队使用Git在一个Repo中协同开发的时候,使用PR来提交合并请求,合并完开发分支之后,有时候会忘记删除这个分支,所以想找一个批量删除远程分支的方法。
- 删除命令
git push origin :branch
eg: git push origin :eric_test
意思就是把一个空的分支推送到origin
对应的远端仓库的eric_test
分支,也就是删除啦。
git push -d origin eric_test
功能和上边一样的啦
现在的问题就是怎么把要删除的远程分支过滤出来。
StackOverflow说用awk
。
git branch --remote
可以显示远程分支。
使用grep可以筛选出包含特定pattern的分支名,但是会多出remote仓库的别名,比如origin
。
删除需要 git push -d origin eric_test
, 而grep筛选出来的是origin/eric_test
,这里就需要使用awk来对刷选出来的字符串进行修改了。
我的理解:
grep eric
和 awk '/eric/{print $0}'
是一样的。
注意: 这里的/eric/
中的/
和-F/
并没有关系,我的理解是分割pattern和action的,类似于vim中的正则操作也是使用/
来分割pattern和替换部分(:%s/pattern/replacement),或分割pattern和action(:%g/pattern/action)。
‘awk -F/’ 意思是指定 `/``作为String切分的分隔符。默认是空格。
awk -F/ '/pattern/{print $x}'
的意思是先筛选出包含pattern
的字符串(当然如果用正则pattern,则是符合pattern的字符串),然后使用 -F
指定的分割符即/
来分割字符串,这样就可以筛选出符合规则的分支名,并去除掉不用的部分了。