awk:打印最后 N 列,其中 N 通过变量传递

awk:打印最后 N 列,其中 N 通过变量传递

我的输入变量$dirPath包含目录路径。该操作是为了能够检索目录路径中的最后 N 个值,其中N通过变量 传递$depth。对于固定N值(比如2)我可以通过以下方式实现

subDir=$(echo $dirPath|awk -F "/" '{n= 2; for (--n; n >= 0; n--){ printf "%s/", $(NF-n)} print ""}')

但是,如果我尝试将上述命令中的 2 替换为变量 as n=$depth,则该subDir变量为空。那么如何将变量值传递给上面的命令呢?

答案1

如果你想传递一个bash变量,awk那么你只需要使用 awk 的-v参数:

awk -v n=$depth -F "/"...

答案2

由于您正在使用bash,因此不需要外部工具,例如awk

#read path constituents into array arr
IFS=/ read -ra arr <<<"$dirPath"
n=2
#print the last two
(IFS=/; printf '%s\n' "${arr[*]:(-n)}")

相关内容