使用awk在csv文件的标题行中添加前缀

时间:2018-08-02 11:13:18

标签: csv awk header

我目前正在处理以大型CSV文件(超过1600列和100行)收集的数据集。 Excel或LibreOffice calc无法轻松处理这些文件以将前缀或后缀连接到标题行,这是我在较小的数据集上要做的。 研究主题后,我想到了以下命令:

awk 'BEGIN { FS=OFS="," } {if(NR==1){print "prefix_"$0}; if(NR>1){print; next}}' input.csv >output.csv

不幸的是,这仅将前缀添加到第一个单元格。例如:

输入:

head_1,head_2,head_3,[...],head_n

"value_1","value_2","value_3",[...],"value_n"

预期输出:

prefix_head_1,prefix_head_2,prefix_head_3,[...],prefix_head_n

"value_1","value_2","value_3",[...],"value_n"

实际输出:

prefix_head_1,head_2,head_3,[...],head_n

"value_1","value_2","value_3",[...],"value_n"

由于列号在不同的csv文件中可能是可变的,因此我想提供一种解决方案,该方法不需要枚举在其他地方找到的所有列。 这是必要的,因为以下步骤是通过合并所有列(行在所有文件中以相同的顺序引用相同的实例)来在单个csv数据库中合并各种(5或6个)大型csv文件。 预先感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

awk 'BEGIN{FS=OFS=","} NR==1{for (i=1;i<=NF;i++) $i="prefix_"$i} 1' file