如何从所有csv文件中添加列n并存储在另一个csv文件中(标头是该列来自的文件名)?

本韦斯特

我有多个.csv文件,我想从每个文件中提取特定的列。假设第5列。我想将该列添加到csv文件中,并从每个后续文件中将新列附加到该列中。我可以使用从他人那里获取的以下代码来执行此操作:

awk '{_[FNR]=(_[FNR] OFS $1)}END{for (i=1; i<=FNR; i++) {sub(/^ /,"",_[i]); print _[i]}}' input*.csv > output.csv`

当查看输出文件时,我注意到添加列的顺序不是顺序的。结果,我希望修改代码,以使列的标题是该列来自的文件名。我该怎么做呢?

例如:input1.csv可以是:

1,2,3,4,5
6,7,8,9,10

input2.csv可以是:

11,12,13,14,15
16,17,18,19,20

我希望output.csv为:

input1.csv, input2.csv
5,15
10,20

我希望这是有道理的,并预先感谢。

RavinderSingh13

您可以尝试以下吗?使用GNU中显示的示例编写和测试awk

awk '
BEGIN{ FS=OFS="," }
FNR==1{
  fileName=(fileName?fileName", ":"")FILENAME
}
{
  max=(max>FNR?max:FNR)
  val[FNR]=(val[FNR] == "" ? "" : val[FNR] OFS) $NF
}
END{
  print fileName
  for(i=1;i<=max;i++){
    print val[i]
  }
}
' *.csv  > output.csv

在显示的示例中,名为的输出文件output.csv将包含以下内容。

input1.csv, input2.csv
5,15
10,20

说明:添加了以上的详细说明。

awk '                                           ##Starting awk program from here.
BEGIN{ FS=OFS="," }                             ##Starting BEGIN section from here and setting field separator and output field separator as comma here.
FNR==1{                                         ##If this is first line of all Input_file
  fileName=(fileName?fileName", ":"")FILENAME   ##Creating fileName which has current Input_file name in it and keep adding it.
}
{
  max=(max>FNR?max:FNR)                         ##Creating max, to get highest number of lines.
  val[FNR]=(val[FNR] == "" ? "" : val[FNR] OFS) $NF        ##Creating val with index of FNR and keep adding values of last field in it.
}
END{                                            ##Starting END block of this program from here.
  print fileName                                ##Printing all file names in outputFile.
  for(i=1;i<=max;i++){                          ##Starting for loop from 1 to max here.
    print val[i]                                ##Printing array val value here.
  }
}
' *.csv > output.csv                            ##Mentioning all *.csv files here.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从另一个csv文件添加列

将一个.csv中的列添加到另一个.csv文件中

从另一个csv文件添加列

如何比较两个不同的csv文件中的列并替换另一个文件中的列

如何通过另一个文件中的值更改csv列中的值

将子文件夹中的多个 CSV 文件合并到一个唯一的文件中,并在新列中添加文件名

使用 python 将现有 csv 文件中的列插入另一个 csv 文件

将列添加到CSV文件,然后在该列中插入文件名

如何从另一个ini配置文件中存储的文件名打开ini配置文件?

如何使用python将某些csv文件列复制到另一个csv文件中?

从CSV文件中提取最后几行,并将其放入Python中具有文件名的另一个文件中

diff仅将文件名存储在另一个文件中

通过删除PERL中的某些列,从另一个CSV文件创建一个CSV文件

仅将一个 CSV 文件中的两列更新到另一个 CSV 文件

如何在一个步骤中从另一个目录复制文件名并在文件名中添加前缀?

用另一个图像替换文件夹中的所有图像,但保留文件名

如何在一个文件夹中导入所有 csv 文件并使文件名成为 Pandas 中的变量名?

从 CSV 文件中复制一列并粘贴到另一个 CSV 文件中

PowerShell如何通过ID将列从另一个CSV文件添加到CSV文件?

读取csv文件,并仅在另一个csv文件中添加新条目

在另一个 csv 文件中搜索一个 CSV 文件并更新第一个 csv 中的列值

将多个 csv 文件导入到 Pandas 中并连接到一个 DataFrame 中,其中所有 csv 中的第一列都相同,并且没有数据标题只是文件名

通过将字段与 bash 中的另一个 csv 文件进行匹配,在 csv 文件中附加列

根据来自另一个文件的zip合并更新csv文件中的城市

如何编写脚本来读取多个 CSV 文件名和数据并写入另一个 CSV 文件?

如何检查一个csv中的单词是否在另一个csv文件的另一列中

如何比较一个CSV中的一行与另一个CSV文件中的所有行?

合并多个csv文件,在合并的文件中创建一个新列,该列中具有示例名称

在csv文件中搜索列词,并用另一个值java替换它