Awk: Imprime as últimas N colunas, onde N é passado por uma variável

0

Minha variável de entrada $dirPath contém o caminho do diretório. A ação é conseguir recuperar os últimos N valores no caminho do diretório, onde N é passado por meio de uma variável $depth . Para um valor fixo de N (digamos 2), eu posso conseguir isso através de

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

No entanto, se eu tentar substituir 2 no comando acima por uma variável como n=$depth , a variável subDir estará vazia. Então, como posso passar um valor variável para o comando acima?

    
por WanderingMind 12.05.2016 / 21:16

2 respostas

2

Se você quiser passar uma variável bash para awk , então tudo que você precisa é usar o parâmetro -v do awk:

awk -v n=$depth -F "/"...
    
por 12.05.2016 / 21:27
0

Como você está usando bash , não há necessidade de ferramentas externas, como awk

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