reformatando a saída do comando dentro do script bash

3

dentro do script a tentativa aqui é remover o: e depois reverter o / para \ dentro da impressão

atualmente eu tenho que exibir o caminho do Linux: O diretório inicial está localizado aqui: rtp1-filer-ns: / homedir-privado / private007 / usuário

e gostaria de reformatar a facilidade dos meus usuários Caminho do Windows para o diretório inicial: \ rtp1-filer-ns \ homedir-privado \ private007 \ user

atualmente esta parte do script é a seguinte

echo "The shell is: 'ypmatch $EndUser passwd | awk -F\: '{ print $7 }''"
echo ""
echo "The home directory is located here:"
   ypmatch $EndUser auto_home 
echo ""
echo "Windows path to home directory:"
echo "\\'ypmatch $EndUser auto_home | awk -F':' '{print $1}''\$EndUser"

me dá a impressão de:

The home directory is located here:
rtp1-filer-ns:/homedir-private/private007/user

Windows path to home directory:
\rtp1-filer-ns\user

assumindo que eu possa usar sed / awk algo do tipo, aberto para sugestões $ EndUser é um var definido

    
por Tim M. 04.03.2016 / 22:20

1 resposta

2

com bash

Primeira abordagem - use a substituição de parâmetros

#use command substitution to set command output into variable var
var=$(ypmatch $EndUser auto_home)
#strip out the first :
var=${var/:}
#replace all instances of / with \
var=${var//\//\}
echo $var

rtp1-filer-ns\homedir-private\private007\user

Segunda abordagem - usar matrizes

# Set path components into array frags
IFS=/ read -a frags < <(ypmatch $EndUser auto_home)

# Strip ":" off rtp1-filer-ns
frags[0]="${frags[0]%:}"

# Set IFS to \ to print frags \-separated
echo "$(IFS=\ ;printf '%s\n' "${frags[*]}";)"

rtp1-filer-ns\homedir-private\private007\user
    
por 04.03.2016 / 22:53