AWK如果字段1等于可变值,则更新字段2和3

时间:2016-03-18 07:31:36

标签: shell csv unix awk sh

我正在处理一个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

2 个答案:

答案 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