3) #模式匹配运算符#
模式为`通配符(wildcard)`
基本通配符:
? 任何单一字符
* 任何的字符字符串
[set] 任何在set里的字符
[!set] 任何不在set里的字符
如:
[abc]
[.,;] 句点,逗点或分号(awk 多字符分割的写法)
[-_] 破折号或下划线
[a-c]
[a-z]
[!0-9] 任何一个非数字字符
[0-9!] 任何一个数字或惊叹号
[a-zA-Z0-9_-]
${variable#pattern} 删除variable从左到右最短匹配
${variable##pattern} 删除variable从左到右最长匹配
${variable%pattern} 删除variable从右到左最短匹配
${variable%%pattern}删除variable从右到左最长匹配
附加:
git不熟,我只能帮凡爷最后一部分,他那部分未经他允许,还是不放了。
for name in `ls $respath |grep -v gitresult`
do
sort -u $respath/$name | while read commit ; do git show $commit --pretty=tformat: --numstat;done | \
awk -v user=$name '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "%s added lines: %s, removed lines: %s, total lines: %s\n", user , add, subs, loc }' >> $respath/gitresult.$since.$before
done
-------小技巧------
path=$1
respath=/home/zcy
respath="$respath/${path:-result}"
如果$1为空,则respath=/home/zcy/result;否则,respath=/home/zcy/$path
或者:
path=$1
path=${path:=result}
respath=/home/zcy/$path