按行合并文件

按行合并文件

是否可以按照使用简单的 bash 脚本使用or给出的指令复制File1新的整行?File3File2sedawk

File1: /*two or more columns*/
AC    456324
DC    689712
GH    123677
KL    236587

File2: /*one column*/
AC
DC

File3: 
AC    456324
DC    689712

我实际上是使用 Python 字典执行此操作,我想知道您是否知道一个简单的解决方法。

答案1

grep

grep -Ff File2 File1

awk

awk 'NR==FNR {a[$1]++;next} a[$1]' File2 File1

答案2

您可以使用join通过连接两个文件中的特定列具有相同值的位置来合并两个文件中的行。请注意,输入文件需要按该列中的值排序。

join File1 File2

如果文件未排序,在 bash/ksh93/zsh 中:

join <(sort File1) <(sort File2)

这里要连接的字段是包含 、 等的字段ACDC下面是一个示例,如果要连接的字段是 中的第 3 列File1和 中的第 2 列File2

join -1 3 -2 2 <(sort -k3,3 File1) <(sort -k 2,2 File2)

相关内容