我使用 awk 进行多对一过滤,即读取多个 .csv 文件,并使用条件将这些文件中的记录过滤到另一个 csv 文件中。命令是
awk -F, '{if($1=="OPTSTK"&&$13>0)print > "stockoptions.csv";}' fo1.csv fo2.csv
该命令为我完成了这项工作,除了当我对一组新的 csv 文件(例如 fo3.csv 和 fo4.csv)运行此命令时,先前命令执行的输出会被覆盖。有没有办法将后续执行的输出附加到第一次执行命令的输出?
答案1
是的,使用>>
而不是>
.
例如:
awk -F, '$1 == "OPTSTK" && $13 > 0 { print >> "stockoptions.csv" }' fo1.csv fo2.csv
或者,让 shell 进行重定向并缩短命令的长度awk
:
awk -F, '$1 == "OPTSTK" && $13 > 0' fo1.csv fo2.csv >>"stockoptions.csv"