xml - 如何在一个相应的列上加入两个单独的文件?

标签 xml linux bash sorting join

我试图在一列上连接两个文件,但连接和排序命令给我以下输出:

join: file 1 is not in sorted order

文件 1:

TEST->Infrastructure->Global Windows Server, OI-QASDWDASDWQWD,
TEST->Infrastructure->Global Windows Server, OI-WASDWDASDWWWW,
TEST->Infrastructure->zSeries_MVS, REGAA638G0K,
TEST->Infrastructure->zSeries_MVS, REGAA55410K,

文件 2:

SERVER1; Deployed; REGAA638G0K;
SERVER2; Deployed; OI-WASDWDASDWWWW;
SERVER3; Delete; OI-QASDWDASDWQWD;
SERVER4; Delete; REGAA55410K;

预期文件 3:

SERVER1; Deployed; TEST->Infrastructure->zSeries_MVS;
SERVER2; Deployed; TEST->Infrastructure->Global Windows Server;
SERVER3; Delete; TEST->Infrastructure->Global Windows Server;
SERVER4; Delete; TEST->Infrastructure->zSeries_MVS;

我的命令:

join -1 2 -2 3 -o 1.1,2.1,2.2 <(sort -t"," -k2 spmGroupsModifiedSCLine.out) <(sort -t";" -k3 spmCompStatJoined.out)

第一个文件中的第二列和第二个文件中的第三列相同,所以我尝试加入它并先对其进行排序。您是否看到其他方式进行连接?谢谢!

最佳答案

Awk解决方案:

awk 'NR==FNR{ a[$2]=$1; next }$3 in a{ print $1,$2,a[$3] }' FS=',' file1 FS=';' OFS='; ' file2

输出:

SERVER1;  Deployed; TEST->Infrastructure->zSeries_MVS
SERVER2;  Deployed; TEST->Infrastructure->Global Windows Server
SERVER3;  Delete; TEST->Infrastructure->Global Windows Server
SERVER4;  Delete; TEST->Infrastructure->zSeries_MVS

关于xml - 如何在一个相应的列上加入两个单独的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47943122/

相关文章:

iphone - iPhone 上的流式 SAX XML 处理

xml - 基于属性值创建父子元素并抑制输出中的重复元素

linux - Git + 智能 Http : 403 Error

linux - 执行 "cat/dev/null > logfile.log"后的虚拟文件大小

php - SimpleXML 仅解析顶层

php - 无法在 PHP 中解码 UTF8?

linux - 如何给用户 ionic 级权限?

c - 与 Windows 相比,为什么 Screen 在 Linux 中没有消失?

mysql - 从 Ubuntu Bash 访问 MySQL

linux - 在 AWK 生成的命令字符串中嵌入引号?