在bash中更新csv数据



我正在尝试创建一个bash脚本,通过csv文件查找,并依赖于一些输入,这将是文件的一行中的第一个值,它将增加行中第二个值的值10。

。我有一个文件:

Jim,0,
Henry,12,
Louise,6

对于输入"Henry",我想将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作为我在这里发现的,但它似乎不起作用,是否不保存或不编辑我不知道。

我试着用awk来做,但我不太了解它,所以如果你们中的任何一个人能好心地启发我,我将非常感激。

编辑:修复错误的格式

提前感谢!

awk不支持" in place ";更换。你应该用gawk代替。例如:

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

-F定义delimeter

{$2 = ($1 == "Henry") ?$2+10: $2}

三目运算符

条件表达式?Statement1: statement2

https://www.tutorialspoint.com/awk/awk_ternary_operators.htm

if condition ?然后第一,否则第二所以,如果条件满足,我们就加10,如果不满足,我们就把$2nd字段改写成

之前的样子,下面是末尾1的含义:https://unix.stackexchange.com/questions/63891/what-is-the-meaning-of-1-at-the-end-of-an-awk-script

相关内容

  • 没有找到相关文章

最新更新