Lendo o conteúdo do arquivo e dividindo usando ksh

1

Estamos usando um script ksh para instalar um produto.

Eu tenho outro arquivo de configuração, eu preciso ler este arquivo de configuração do meu script principal

Conteúdo do arquivo de configuração:

BPWS_Instance_1:Linux:x86_64:YES:/hosting/download:BPWS_Linux_64.jar
paymon_Instance_1:Linux:i686:YES:/hosting/download:paymon_Linux_32.jar

Então, agora no meu script principal depois de ler o arquivo de configuração Se eu tiver BPWS_Instance_1 (este é o nome da instância) que está sendo executado ( YES = Running) no processador Linux de 64 bits ( Linux: x86_64 ) então eu preciso obter o arquivo BPWS_Linux_64.jar do local / hosting / download .

    
por user31522 05.02.2013 / 17:20

1 resposta

1

Dependendo do que você deseja fazer com os dados, existem duas abordagens principais.

Você pode analisar os dados em ksh. Use um loop para ler os dados linha por linha com o read builtin, especificando : como o separador. Isso permite que você quebre a entrada em colunas e faça o que quiser com as colunas. Meu código de exemplo copia o arquivo especificado do local especificado para o diretório atual e faz isso sempre que a instância está em execução; ajustar o corpo do loop para o que você quiser fazer.

while IFS=: read instance_name os arch running location filename junk; do
  if [ "$running" = "YES" ]; then
    cp "$location/$filename" .
  fi
done <Configuration

Se você precisasse de algum processamento de texto nos dados, o awk seria a ferramenta de escolha. Aqui, você teria que fazer um trabalho adicional para processar seus dados, por isso é mais complicado do que while … read … .

awk -F ':' '
    $4 == "YES" { 
        ENVIRON["location"] = $5;
        ENVIRON["$filename"] = $6;
        system("cp \"$location/$filename\" .");
    }
' <Configuration
    
por 06.02.2013 / 02:18