所有更新的列都变为零
all updated columns turn to zero
我使用下面的脚本来更新 csv 文件,但它会将所有第二个列设置为零
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 命令,并使用更复杂的语言。
我使用下面的脚本来更新 csv 文件,但它会将所有第二个列设置为零
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 命令,并使用更复杂的语言。