好的,所以我需要用几个文本文件来完成这个。 我需要合并这两个文件。
文件1和文件2需要成为文件3。
文件1:
ABC:123
TUV:678
QRS:456
文件2:
123:XXX
678:EEE
456:DDD
文件3:
ABC:123:XXX
TUV:678:EEE
QRS:456:DDD
如上所示,第二项在FILE 1和FILE 2中都很常见。我只需要合并FILE 1和FILE 2中的所有项目,这些项目都有一个像FILE 3中一样的公共项目.I&#39 ; d更喜欢使用grep,sed,cut等。
答案 0 :(得分:3)
$ cat file1
ABC:123
TUV:678
QRS:456
$ cat file2
123:XXX
678:EEE
456:DDD
awk 'BEGIN{FS=":"}NR==FNR{f2[$2]=$0;next}$1 in f2{printf "%s:%s\n",f2[$1],$2}' file1 file2 >file3
$ cat file3
ABC:123:XXX
TUV:678:EEE
QRS:456:DDD
答案 1 :(得分:2)
使用GNU coreutils sort
和join
:
join -t: -1 2 -2 1 <(sort -t: -k2n file1) <(sort -t: -k1,1n file2)
输出:
123:ABC:XXX
456:QRS:DDD
678:TUV:EEE
join
需要知道要加入哪些字段,并且必须对其输入进行排序。 join
的选项执行以下操作:
-t:
使用冒号作为字段分隔符-1 2
使用第一个文件中的第二个字段作为键-2 1
使用第二个文件中的第一个字段作为键 sort
次调用按键列以数字方式对每个文件进行排序。