使用 awk 将记录附加到文件

使用 awk 将记录附加到文件

我使用 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"

相关内容