按列合并两个文件,缺少条目时添加 0

按列合并两个文件,缺少条目时添加 0

我有两个文件,如下所示。

  • File1 File1中有五个国家

    >USA
    >England
    >France
    >Japan
    >Thailand

  • File2 File2中只有四个

    >USA
    >England
    >Japan
    >Thailand

我用来paste -d "," file1.txt file2.txt1将两个文件合并在一起

  • 输出

    >USA ,>USA
    >England,>England
    >France,>Japan
    >Japan,>Thailand
    >Thailand,

正如您在此处所看到的,输出的两个文件的列表顺序彼此不一致,因为 File2 -France 中缺少一个值。相反,它在“法国”之后发生了变化。

- 欲望输出


    >USA       >USA
    >England   >England
    >France    >0 (or any symbols)
    >Japan     >Japan
    >Thailand  >Thailand 

     

如何编写 UNIX 命令语句,将两个文件合并在一起并用 0 替换缺失值,但其余订单保持匹配?需要添加、更改或修改哪些内容paste -d "," file1.txt file2.txt1

任何帮助将不胜感激。谢谢。

答案1

既然你说“任何符号”都可以, diff 可能就足够了:

diff -w -y file1 fiel2

    >USA                                >USA
    >England                            >England
    >France                           <
    >Japan                              >Japan
    >Thailand                           >Thailand

缺失行由><指示,该行分别出现在 file2 或 1 中。-w比较期间将忽略空格。

答案2

使用awk

awk 'NR==FNR{a[$1]=$1;next}
{if ($1 in a) print a[$1],$1; else print $1 ,">0"}' file2 file1

相关内容