Awk imprime as três primeiras pastas na árvore de diretórios, separadas por /

0

Eu tenho uma variável que imprime uma árvore de diretórios como:

/folder1/folder2/folder3/folder4/folder5/folder6

Estou interessado apenas nos primeiros quatro valores , qual seria a melhor maneira de bash imprimir somente os primeiros diretórios separados por barra invertida, como:

/folder1/folder2/folder3/folder4
    
por Jason Stewart 15.08.2016 / 04:01

2 respostas

7

Usando o awk:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    awk -F/ -vOFS=/ '{ print $1,$2,$3,$4,$5; }'

OFS = Separador do campo de saída.

$1 .. $5 são necessários devido à contagem de barras inicial como 1 .

Usando o corte:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    cut -f -5 -d/

Usando sed:

echo /folder1/folder2/folder3/folder4/folder5/folder6 |\
    sed 's:\(\(/[^/]\+\)\{4\}\).*::'
    
por 15.08.2016 / 04:59
2

Se houver bash e var iable

echo ${var%/${var#/*/*/*/*/}}

Outro caminho

IFS=/ var=($var)
printf '%b/' "${var[@]::5}\n\c"
    
por 15.08.2016 / 10:50