Bash

awk:列印最後 N 列,其中 N 通過變數傳遞

  • May 12, 2016

我的輸入變數$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變數為空。那麼如何將變數值傳遞給上述命令呢?

如果你想傳遞一個bash變數,awk那麼你只需要使用 awk 的-v參數:

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

由於您正在使用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)}")

引用自:https://unix.stackexchange.com/questions/282850