我想仅通过第一列比较两个文件。
我的第一个看起来像这样:
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
之类的东西。任何的想法?
您可以使用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
非常好。谢谢。是否可以在整行中设置“区域”以进行比较?