所有更新的列都变为零

  • 本文关键字:更新 csv updates
  • 更新时间 :
  • 英文 :


我使用下面的脚本来更新csv文件,但它会将所有第二个coumn设置为零

cat file_0.csv notZero.csv > update.csv

file_0.csv

"m01";"0";"yyy";"zzz"
"m02";"0";"yy";"zzz"
"m03";"0";"y";"zzz"

和notZero.csv

"m02";"5";"yy";"zzz"
"m04";"7";"yyy";"zzz"
"m05";"8";"yy";"zzz"
"m06";"9";"y";"zzz"

预期输出

"m01";"0";"yyy";"zzz"
"m02";"5";"yy";"zzz"
"m03";"0";"y";"zzz"
"m04";"7";"yyy";"zzz"
"m05";"8";"yy";"zzz"
"m06";"9";"y";"zzz

"

join让您走了很长的路,但您还必须指定字段分隔符:

$ join -a1 -a2 -t';' notZero.csv file_O.csv

它给出

"m01";"0";"yyy";"zzz"
"m02";"5";"yy";"zzz";"0";"yy";"zzz"
"m03";"0";"y";"zzz"
"m04";"7";"yyy";"zzz"
"m05";"8";"yy";"zzz"
"m06";"9";"y";"zzz"

请注意输入文件的顺序,这样任何匹配的字段都将首先具有非零值。

要去掉多余的字段,可以使用cut:

$ join -a1 -a2 -t';' notZero.csv file_O.csv  | cut -d';' -f1,2,3,4
"m01";"0";"yyy";"zzz"
"m02";"5";"yy";"zzz"
"m03";"0";"y";"zzz"
"m04";"7";"yyy";"zzz"
"m05";"8";"yy";"zzz"
"m06";"9";"y";"zzz"

但对于任何更高级的组合,我建议避免使用shell和shell命令,并使用更复杂的语言。

相关内容

  • 没有找到相关文章

最新更新