我想仅通过第一列比较两个文件。
我的第一个看起来像这样:
0009608a4138a8e7 hdisk26 altinst_rootvg
000f7d4a8234a675 hdisk12 vgdbf
000f7d4a8234d5c9 hdisk22 vgarcbkp
我的第二个文件如下:
000f7d4a8234a675 hdiskpower64 [Lun_vgdbf]
000f7d4a8234d5c9 hdiskpower61 [Lun_vgarcbkp]
这是我想要生成的输出:
0009608a4138a8e7 hdisk26 altinst_rootvg
000f7d4a8234a675 hdisk12 vgdbf hdiskpower64 [Lun_vgdbf]
000f7d4a8234d5c9 hdisk22 vgarcbkp hdiskpower61 [Lun_vgarcbkp]
我想知道为什么diff
不支持位置比较。
像diff -y -p1-17 file1 file2
这样的东西。有什么想法吗?
答案 0 :(得分:0)
您可以使用join
生成所需的输出:
join -a 1 file1 file2
-a 1
选项表示从第一个文件输出第二个中没有对应关系的行,因此这假设第一个文件包含第二个文件中存在的每个id。
它还依赖于在第一个文件上排序的文件,根据您的示例数据可能就是这种情况。如果不是,您需要事先对它们进行排序(join
命令会警告您文件未被排序)。
示例执行:
$ echo '1 a b
> 2 c d
> 3 e f' > test1
$ echo '2 9 8
> 3 7 6' > test2
$ join -a 1 test1 test2
1 a b
2 c d 9 8
3 e f 7 6