从CSV读取数据并将其放入.rxt文件

时间:2019-05-31 20:17:29

标签: bash sh

我对Shell脚本还很陌生,在开始阶段只有一个有趣的案例。因此,情况就像我有一个包含以下数据的csv文件:

ip_address,name,address,phone,email_id
192.168.1.1,ABC,Delhi,1234567,abc@gmail.com
192.168.1.2,MNO,Bangalore,1234567,mno@gmail.com
192.168.1.3,CDE,Pune,1234567,cde@gmail.com
192.168.1.4,PQR,Mumbai,1234567,pqr@gmail.com
192.168.1.5,XYZ,Noida,1234567,xyz@gmail.com

如何编写将登录到服务器的外壳程序脚本(192.168.1.1、192.168.1.2等),并且外壳程序脚本应在/ root目录中的特定服务器上创建.rxt文件,并将相应的数据放入像下面这样的rxt文件?

(即我们可以创建/ root / data之类的目录,并在此数据中将rxt文件作为details.rxt放置)

ip_address=192.168.1.1
name=ABC
address=Delhi
phone=1234567
email_id=abc@gmail.com

ip_address=192.168.1.2
name=MNO
address=Bangalore
phone=1234567
email_id=mno@gmail.com

以此类推。


编辑:

我正在尝试从csv文件中读取数据,例如:

INPUT=serverdetails.csv
OLDIFS=$IFS
IFS=“,”
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99}
while read ip_address name address phone email_id
do
  echo “IPAddress = $ip_address”
  echo “Name = $name”
  echo “Address = $address”
  echo "Telephone = $phone”
  echo “EmailID = $email_id”
done < $INPUT
IFS=$OLDIFS

1 个答案:

答案 0 :(得分:0)

这是转换部分的方法,如果您仍然需要ssh部分的帮助,请问一个新问题:

$ cat tst.awk
BEGIN { FS=","; OFS="=" }
NR==1 {
    for (i=1; i<=NF; i++) {
        name[i] = $i
    }
    next
}
{
    for (i=1; i<=NF; i++) {
        print name[i], $i
    }
    print ""
}

$ awk -f tst.awk file
ip_address=192.168.1.1
name=ABC
address=Delhi
phone=1234567
email_id=abc@gmail.com

ip_address=192.168.1.2
name=MNO
address=Bangalore
phone=1234567
email_id=mno@gmail.com

ip_address=192.168.1.3
name=CDE
address=Pune
phone=1234567
email_id=cde@gmail.com

ip_address=192.168.1.4
name=PQR
address=Mumbai
phone=1234567
email_id=pqr@gmail.com

ip_address=192.168.1.5
name=XYZ
address=Noida
phone=1234567
email_id=xyz@gmail.com