我正在处理一个shell脚本来处理CSV文件。我有一个csv文件,如下所示。
cat list.csv
0003812,3,2
0000808,0,0
0003346,1,0
0018003,8,1
0044477,3,0
0197183,0,0
在脚本中,我来到逻辑,我在变量“var”中从此文件中获取第一个字段的值。如果可变“var”的值与字段1匹配,我需要增加字段2和3.我需要确保将更改的值放回到同一文件的同一字段中。
我尝试了类似下面的内容,但它不起作用
awk -F, '$1=="$var" {$2+=1;$3+=1}1' OFS=, /foo/bar.csv
如果var =“0044477”
,则预期输出如下Output
0003812,3,2
0000808,0,0
0003346,1,0
0018003,8,1
0044477,4,1
0197183,0,0
答案 0 :(得分:1)
像这样使用awk
:
var='0044477'
awk -v val="$var" 'BEGIN{FS=OFS=","} $1==val{$2++; $3++} 1' list.csv
0003812,3,2
0000808,0,0
0003346,1,0
0018003,8,1
0044477,4,1
0197183,0,0
答案 1 :(得分:-1)
请使用以下命令。
无功=' SOME_VALUE'
awk -F',' '{ if($1=='"$Var"') { print $1,$2+1,$3+1 } else {print $1,$2,$3} }' file.dat