我目前正在处理以大型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文件。 预先感谢您的时间和帮助。
答案 0 :(得分:0)
awk 'BEGIN{FS=OFS=","} NR==1{for (i=1;i<=NF;i++) $i="prefix_"$i} 1' file