我有一个用 pwd 命令检索的路径,我必须在shell脚本中修改该路径运行时。对于istance,假设我有 / var / www / cgi-script ,我必须在 / var / www / etc 中修改它。我要做的是检索“/”的最后一个索引,取一个子字符串,然后添加 etc 。我尝试了几次 awk ,但我似乎无法找到解决方案。有没有办法使用反向索引?
path=`pwd`;
char="/"
pathindex=`awk -v a="$path" -v b="$char" 'BEGIN { print index(a,b)}'`
答案 0 :(得分:4)
结帐dirname:
$ pwd
/var/www/cgi-script
$ echo $PWD
/var/www/cgi-script
$ echo `dirname $PWD`/etc
/var/www/etc
答案 1 :(得分:3)
@AndersLindahl有正确的答案。要在awk中执行此操作:
newpath=$(awk -F $char -v OFS=$char '{$NF="etc"; print}' <<< "$path")
答案 2 :(得分:0)
我的情况有点不同,我已经在代码中了 - 做一个新的FS为时已晚。我有一个人名不明确的单词,但最后一个字是他们的姓,需要被“/”包围
a=split(prsn,x," ") # Split into 'x' based on a space, 'a'=number of words
prsn="" # reset variable to null
for (j=1;j<a;j++) { # loop through and concatenate all but the last word
prsn=sprintf("%s %s",prsn,x[j])
}
prsn=substr(prsn,2) # we got an extra space in there at the beginning - lose it
prsn=sprintf("%s /%s/",prsn,x[a]) # format the final name
print "1 NAME " prsn # print it