alwaystest / Blog

24 stars 2 forks source link

awk 用法理解 #60

Open alwaystest opened 7 years ago

alwaystest commented 7 years ago

awk 理解

标签(空格分隔): shell


团队使用Git在一个Repo中协同开发的时候,使用PR来提交合并请求,合并完开发分支之后,有时候会忘记删除这个分支,所以想找一个批量删除远程分支的方法。

现在的问题就是怎么把要删除的远程分支过滤出来。

StackOverflow说用awk

git branch --remote可以显示远程分支。

使用grep可以筛选出包含特定pattern的分支名,但是会多出remote仓库的别名,比如origin

删除需要 git push -d origin eric_test, 而grep筛选出来的是origin/eric_test,这里就需要使用awk来对刷选出来的字符串进行修改了。

我的理解:

grep ericawk '/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指定的分割符即/来分割字符串,这样就可以筛选出符合规则的分支名,并去除掉不用的部分了。