按位置比较文件

问题描述 投票:0回答:2

我想仅通过第一列比较两个文件。

我的第一个看起来像这样:

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之类的东西。任何的想法?

bash diff
2个回答
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

Ideone test with your sample data


0
投票

非常好。谢谢。是否可以在整行中设置“区域”以进行比较?

© www.soinside.com 2019 - 2024. All rights reserved.