- 论坛徽章:
- 1
|
请教一个问题,shell 字符串处理
- echo "FILE 0755 usbin/activate pkg/usr/local/sbin/abc"|awk '/FILE/{print "install -m"$2,$3,$4;gsub("^[a-z].*/","",$3);temp=$4;gsub("/[^/]*[a-z]$","/",temp);printf "install -m%s %s ",$2,temp$3;gsub("^[a-z][^/]*/","/",$4);print $4}'
- install -m0755 usbin/activate pkg/usr/local/sbin/abc
- install -m0755 pkg/usr/local/sbin/activate /usr/local/sbin/abc
复制代码
substr是按长度取,现在改成用正则
$3删除以字母开头/之前的字符串,删除/之前的字符串,如果你这里的路径有多层,可能得重新写正则
gsub("^[a-z].*/","",$3);
$4,删除字母开头,后面跟一个/的字符串,就是删除第一个/之前的字符串
gsub("^[a-z][^/]*/","/",$4); |
|