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



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

这样使用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

请使用以下命令。

变量='some_value'

awk -F',' '{ if($1=='"$Var"') { print $1,$2+1,$3+1 } else {print $1,$2,$3} }' file.dat

最新更新