As novas linhas dentro de sua variável de substituição de comando OUTPUT são preservadas até serem divididas em palavras quando você echo
delas para a substituição do comando GIGS - que é quando sua saída se transforma em uma única linha separada por espaço. Cite a variável para preservar as novas linhas. A variável GIGS é quase uma cópia da sua variável OUTPUT - você deve notar que o primeiro "G" nela foi deletado. Você pode estar tentando deletar todos os G's, neste caso você vai querer usar sed 's/G//g'
.
Resultado final:
OUTPUT="$(sudo ls -lah -R |awk '/^total/ {print $2}' |sort -h)"; GIGS="$(echo "$OUTPUT" | grep G | sed 's/G//g')"; echo $GIGS
ou quebrado em várias linhas:
OUTPUT="$(sudo ls -lah -R |awk '/^total/ {print $2}' |sort -h)";
GIGS="$(echo "$OUTPUT" | grep G | sed 's/G//g')";
echo $GIGS
Como uma possível simplificação, considere fazer mais trabalho no awk:
sudo ls -alhR | awk '/^total/ && /G$/ { print substr($2, 1, length($2)-1) }' | sort -n
Isso estende seu padrão de correspondência awk para exigir que a linha termine em um 'G' (cuidando de seu grep), depois retira o caractere à direita (G) da string antes de imprimi-lo; então é um simples sort -n
no final.