更改.csv文件中的整行

时间:2017-11-30 14:39:58

标签: shell csv

我想创建一个shell脚本,根据用户提供的输入更改整行。我有一个contacts.csv文件,其中包括名字,姓氏,电话号码

例如随机联系

John,Doe,2103485922

所以我希望用户输入联系人的姓氏,然后脚本删除包含其姓氏的整行,然后插入一个包含新数据的全新行。

例如,如果用户在输入中键入Doe(姓氏),然后键入新联系人,我希望删除上述联系人。例如Sylvester,Stallone,1414246551。

有任何线索吗?

我试过这个,但它不能像我想的那样工作:

#!/bin/bash 
echo "Tell Me The Contact you want to delete"
read name | grep -evx $name >> contacts.csv  
echo "Please type a valid first name Press Enter,Last Name Press Enter and 
Phone number"
read fname
read lname 
read phone 
[[ $fname =~ ^[[:upper:]][a-z]+$ ]] || exit 1;
[[ $lname =~ ^[[:upper:]][a-z]+$ ]] || exit 2; 
[[ $phone =~ ^[[:digit:]]+$ ]]      || exit 3;
echo "$fname,$lname,$phone" >> contacts.csv

1 个答案:

答案 0 :(得分:0)

似乎您的问题主要集中在从输入文件中删除一行的能力。可能最简单的方法是使用sed -i

例如:

$ cat test.csv
one,two,three
four,five,six
seven,eight,nine
$ name=five
$ sed -i -e "/,${name},/d" test.csv
$ cat test.csv
one,two,three
seven,eight,nine
$

我希望这会有所帮助。当然,你应该考虑如果多个姓氏匹配会发生什么。但我认为这可以回答你关于如何从给定模式的文件中删除一行的直接问题。

祝你好运!