Linux 在给定条件下,使用AWK将一个文件中的列添加到另一个文件中

Linux 在给定条件下,使用AWK将一个文件中的列添加到另一个文件中,linux,bash,awk,Linux,Bash,Awk,首先,谢谢你的帮助。我有两个文件是 1 10 2 20 3 30 4 10 5 20 及 我想使用AWK过滤两个文件,因此如果第一个文件中的$2等于第二个文件中的$2,则输出将添加一个与给定条件匹配的新列: 1 A 10 2 B 20 3 C 30 4 A 10 5 B 20 我尝试过以下代码: awk 'FNR==NR{a[NR]=$0;next}{$2=a[FNR]}1' letters.txt numbers.

首先,谢谢你的帮助。我有两个文件是

1   10
2   20
3   30
4   10
5   20

我想使用AWK过滤两个文件,因此如果第一个文件中的$2等于第二个文件中的$2,则输出将添加一个与给定条件匹配的新列:

 1  A   10  
 2  B   20  
 3  C   30
 4  A   10  
 5  B   20  
我尝试过以下代码:

awk 'FNR==NR{a[NR]=$0;next}{$2=a[FNR]}1' letters.txt numbers.txt >> combined.txt

问题是,代码只替换了我想要替换的另一列中的一列,并且该列与我上面给出的条件匹配。另外,我想将新列放在number.txt文件的列之间,以下内容可能适合您:

awk '
     NR == FNR { m[$2]=$1;   next }
     $2 in m   {    $3=m[$2]      }
     1
' letters.txt numbers.txt

非常感谢,但您知道如何将其放入文件1中的$2中,并将文件1中的$2替换为$3吗?
awk '
     NR == FNR { m[$2]=$1;   next }
     $2 in m   {    $3=m[$2]      }
     1
' letters.txt numbers.txt