繁体   English   中英

如何比较Unix文本文件中的行并将它们一起添加到另一个文本文件中?

[英]How can I compare rows in Unix text files and add them together in another text file?

我有一个包含3列的文本文件1。 第一列包含一个数字,第二列包含一个单词(可以是像狗一样刺痛或像1050这样的数字),第三列是大写字母的TAG。 我有另一个有2列的文本文件2。 第一列有一个数字,第二列有一个大写字母的TAG。 我想将文本文件1中的每一行与文本文件2中的每一行进行比较。如果文本文件1中第[3]栏中的TAG与文本文件2中第[2]栏中的TAG相同,那么我想要将文本文件1中的数字存储在文本文件1中单词旁边的文本文件2中的数字旁边。文本文件2中没有重复的标记,文本文件1中没有重复的单词。图示:

文本文件1

2    2737    HPL
32   hello   PLS
3    world   PLS
323  .       OPS

文本文件2

342  HPL
56   PLS
342  DCC
4    OPS

我想要:

2   342  2737
32  56   hello
3   56   world
323 4  .

你可以用awk这样做:

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

第一部分将文件2中的键和列保存在关联数组( h )中,第二部分将文件1中的第3列与此数组进行比较并打印相关部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM