在unix中通过文件比较找到不同的字符串

在unix中通过文件比较找到不同的字符串

我有2个文件:

  • File1

    DX 100860599215|732512737|00002|40|1|20220105|20220105|20220523|31014280|5892720|36907000|1|20220105|40|20|D|
    
  • File2

    DX 100860599216|732512737|00002|40|1|20220105|20220105|20220523|31014280|5892720|36907000|1|20220105|40|20|D|
    

我只想得到与此不同的字符串而不是整行

100860599215
100860599216

请在此提供任何帮助

答案1

我带来了这个丑陋的解决方案

diff <(tr  '|'  \\n < file1 ) <(tr  '|' \\n < file2)

给予

1c1
< DX 100860599215
---
> DX 100860599216

在哪里

  • tr '|' \\n < file1压平文件,每个文件'|'都换成新行
  • <( )从内部命令构造一个伪文件

根据评论,替换tr '|' \\n < file1tr ' |' '\n\n' < file1给出更接近预期结果的结果。

diff <(tr  ' |'  '\n\n' < file1 ) <(tr  ' |' '\n\n' < file2)
2c2
< 100860599215
---
> 100860599216

相关内容