更新bash中的csv数据

a1o7rhls  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(118)

我正在尝试创建一个bash脚本,该脚本查看csv文件,并根据某个输入(可能是文件行中的第一个值),将该行中第二个值的值增加10。
我有文件:

Jim,0,
Henry,12,
Louise,6

输入“亨利”后,我想把12改成24,这样文件就会保存这个值。
我尝试过将sed与此命令一起使用

while read type time amount
do
        i=$(($i+1))
        if [ $i -eq 2 ];
        then
                x=$time
        fi
done < $INPUT
sed -i '/^Henry,/s/[^,]*/$(($x+10))/1' test.csv

这样它就可以搜索csv文件,直到它到达第二行(在我的测试中,数组索引似乎从1开始),然后它将时间(行中的第二个值)保存到一个变量中,然后我使用sid,就像我找到here一样,但它似乎不起作用,我不知道它是不保存还是不编辑。
我试着用awk来做,但是我对它不够了解,所以如果你们中的任何一个人能给我启发,我将非常感激。
编辑:修复错误格式
先谢了!

zkure5ic

zkure5ic1#

awk不支持"就地"替换。您应该使用gawk。例如:

gawk -F ',' -i inplace '{ $2 = ($1 == "Henry") ? $2+10 : $2 } 1' file.csv

相关问题