Analisar arquivo csv e para cada objeto definido como uma variável


1

O que estou tentando fazer é analisar um csvarquivo que tenha nomes de servidor e endereços IP e atribuí-los a variáveis. Em seguida, executo comandos usando cada conjunto de variáveis.

Então, se o cvsarquivo test.csv, se parece com isso:

servername, ip address
alphaserver, 192.168.1.2
betaserver, 192.168.1.3

... e assim por diante

Como eu iria analisar isso para fazer $server1=alphaserver $ipaddress1=192.168.1.2para cada linha?

Exemplo de onde eu estou:

INPUT=test.cvs IFS=, [ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } while read "server name" "IP Address" do echo "Server name : $servername" echo "IP Address : $ipaddress"

Bem vinda! Embora ajudemos com o script, não somos um serviço de criação de scripts. O que você tem / tentou até agora? Onde você está ficando preso exatamente?
Ƭᴇcʜιᴇ007

1
Onde estou preso é que sei que posso usar: INPUT = test.cvs IFS =, [! -f $ INPUT] && {echo "arquivo $ INPUT não encontrado"; exit 99; } enquanto lê "server name" "Endereço IP" echo "Nome do servidor: $ servername" echo "Endereço IP: $ ipaddress" done Como faço para incrementar e para cada linha use essas variáveis ​​para executar tarefas.
Regicus Maximus

Respostas:


0

Deixa pra lá. Deixa comigo. Apenas fique no grupo enquanto. Obtenha as variáveis ​​e, depois, elas são definidas, faça o que for necessário para elas, assim:

#!/bin/bash

IFS=","
while read f1 f2
do
echo "Server name : $f1"
echo "IP Address : $f2"
servername=$f1
ipaddress=$f2

echo "Servername variable: $servername"
echo "IP address variable: $ipaddress"
# Insert whatever you need to do with those variables and then the
# while loop will move on to the next line and do that same thing.

done < test.csv

Você ainda precisa pular a primeira linha com os cabeçalhos. Talvez você possa achar interessante o uso de tail -n +2;)
Hastur
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.