我有一个非常大的数据集(大约 150 MB;500 个目标;700,000 多个属性)。我需要在每个文件的末尾添加一个属性。我正在使用的日期文件具有以下结构:
@relation 'filename'
@attribute "place" string
@attribute "institution" string
@attribute "food" string
@attribute "book" string
@data
3.8,6,0,0,church
86.3,0,63.1,0,man
0,0,0,37,woman
我需要在@data 之后的每一行中添加一个信息属性。但是,由于其属性数量众多,我无法在文本编辑器中打开和修改数据。我需要包含在一个单独的制表符分隔文件中的属性,该文件具有以下结构:
church 1
man 1
woman 0
期望的结果将使数据集如下所示:
@relation 'filename'
@attribute "place" string
@attribute "institution" string
@attribute "food" string
@attribute "book" string
@data
3.8,6,0,0,church,1
86.3,0,63.1,0,man,1
0,0,0,37,woman,0
该命令将在 @data 之后的每一行的末尾与第二个文件的每一行匹配,如果匹配,则添加相应的 0 或 1。
我一直在为此寻找解决方案,并且我的搜索大多提出了指向使用文本编辑器方向的答案。正如我之前提到的,文本编辑器的问题不一定是打开文件(例如,UltraEdit 可以处理大部分这种大小的文件)。它是在超过 700,000 个属性之后手动插入一个属性,这是一项非常耗时的任务。
所以,我问社区是否可以使用命令行参数(awk/grep 等)来实现所需的结果?