Unix环境下如何从数据集A复制指定列至数据集B
如何在Unix中合并两个数据集的指定列?
嗨,作为Unix新手完全不用慌,这个需求用几个基础命令就能搞定!我先帮你理清楚操作步骤,假设你的两个数据集分别存在dataA.txt和dataB.txt文件里:
数据集文件内容
- dataA.txt:
A c1 c2 c3 3 2 9 5 3 2 9 1 1
- dataB.txt:
B c1 c2 1 2 1 9 1 6
实现命令
直接运行下面这条命令就能得到你想要的结果,输出会保存到result.txt文件里:
{ echo "c1 c2 c3 c4"; paste -d' ' <(tail -n +3 dataB.txt) <(tail -n +3 dataA.txt | cut -d' ' -f2,3); } > result.txt
命令详解
我拆开来给你解释每个部分的作用,方便你理解:
echo "c1 c2 c3 c4":先输出你需要的目标表头。tail -n +3 dataB.txt:从dataB.txt的第三行开始读取内容,跳过前两行(单独的B和原表头c1 c2),得到B的纯数据行。tail -n +3 dataA.txt | cut -d' ' -f2,3:先跳过dataA.txt的前两行,再用cut命令以空格为分隔符,提取第2、3列(也就是你需要的c2和c3列数据)。paste -d' ' <(...) <(...):把前面两个命令的输出按行合并,-d' '指定用空格分隔列,避免默认的制表符。> result.txt:把所有输出内容写入到result.txt文件里。
最终结果
打开result.txt就能看到你期望的内容:
c1 c2 c3 c4 1 2 2 9 1 9 3 2 1 6 1 1
内容的提问来源于stack exchange,提问作者bha
相关产品推荐
相关产品推荐

