我想加入bash中的两个文件。我想保留这两个文件中的所有可配对和不可配对的行。不幸的是使用join
我可以从一个文件中保存不可配对的字段,例如。 join -1 1 -2 2 -a1 -t" "
。
我也想保留所有配对重复条目(在连接列)从这两个文件。 也就是说如果file1
X ID1 AB
X ID1 CD
X ID1 DF
X id2的CX
X ID3 FV
像SAS一样加入bash
和第二文件是
ID1 DF CF
ID1 DS DG
id2 cv df
id2 as ds
id3 cf cg
生成的文件应该是:
X ID1 AB DF CF
X ID1 AB DS DG
X ID1 CD DF CF
X ID1 CD DS DG
X ID1 DF DF CF
X ID1 DF DS DG
X ID2 CX CV DF
X ID2 CX作为DS
X ID3 FV CF CG
这就是为什么我一直使用SAS做出这样的加入,适当的排序列后。
data x;
merge file1 file2;
by common_column;
run;
它工作正常,但
1.我使用Ubuntu的大部分时间,我切换到Windows在SAS数据合并。
2.最重要的是,SAS可以截断太长的数据条目。
这就是为什么我更愿意以bash加入我的文件,但我不知道适当的命令。
有人可以帮我,或指导我适当的资源吗?
SAS的最大可变长度为32767个字符。所以,如果你遇到截断问题,你的文件不是那么宽泛,那么别的东西就出错了。您可能需要将'lrecl = 32767'语句添加到您的文件名或infile语句中。 – 2012-01-12 17:27:42
我已经使用了导入向导,我可以在其中指定“猜测行数”的字段,导入期间SAS会扫描此行并根据找到的最长记录分配变量的长度。我会尝试使用代码和您的建议导入。 – boczniak767 2012-01-12 21:30:23