AWK-匹配字段1,粘贴同一行中所有匹配列的字段2

AWK-匹配字段1,粘贴同一行中所有匹配列的字段2,awk,Awk,我可以在Excel中执行以下操作,但效率很低。有人能帮我用AWK写这个逻辑吗?因为它是我正在学习的文件解析语言 逻辑 匹配字段1。打印字段1中的匹配字段值和所有匹配行中字段4的每个值,包括要匹配的行 输入文件: ASHBBPRJ01-ASHBBPRJ02-BE ASHBBPRJ01.RD.AS 1 ASHBBBRJ01.RD.AS ae1.0 strict ASHBBPRJ01-ASHBBPRJ02-BE ASHBBPRJ01.RD.AS 2 A

我可以在Excel中执行以下操作,但效率很低。有人能帮我用AWK写这个逻辑吗?因为它是我正在学习的文件解析语言

逻辑

匹配字段1。打印字段1中的匹配字段值和所有匹配行中字段4的每个值,包括要匹配的行

输入文件:

ASHBBPRJ01-ASHBBPRJ02-BE    ASHBBPRJ01.RD.AS    1   ASHBBBRJ01.RD.AS    ae1.0       strict
ASHBBPRJ01-ASHBBPRJ02-BE    ASHBBPRJ01.RD.AS    2   ASHBBPRJ02.RD.AS    ae1.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    1   ASHBBBRJ01.RD.AS    ae1.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    2   NYRKBBRJ02.RD.NY    ae5.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    3   NYRKBBRJ01.RD.NY    ae2.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    4   PROVBBRJ02.RD.RI    ae3.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    5   PROVDSRJ02.RD.RI    ae0.0       strict
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBPRJ01.RD.AS    6   BSTNRCRJ01.RD.RI    ae2.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    1   ASHBBBRJ01.RD.AS    ae1.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    2   NYRKBBRJ02.RD.NY    ae5.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    3   NYRKBBRJ01.RD.NY    ae2.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    4   PROVBBRJ02.RD.RI    ae3.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    5   PROVDSRJ02.RD.RI    ae0.0       strict
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBPRJ01.RD.AS    6   BSTNRCRJ02.RD.RI    ae1.0       strict
输出

ASHBBPRJ01-ASHBBPRJ02-BE    ASHBBBRJ01.RD.AS    ASHBBPRJ02.RD.AS
ASHBBPRJ01-BSTNRCRJ01-BE    ASHBBBRJ01.RD.AS    NYRKBBRJ02.RD.NY    NYRKBBRJ01.RD.NY    PROVBBRJ02.RD.RI    PROVDSRJ02.RD.RI    BSTNRCRJ01.RD.RI
ASHBBPRJ01-BSTNRCRJ02-BE    ASHBBBRJ01.RD.AS    NYRKBBRJ02.RD.NY    NYRKBBRJ01.RD.NY    PROVBBRJ02.RD.RI    PROVDSRJ02.RD.RI    BSTNRCRJ02.RD.RI

下面的
awk
可能会对您有所帮助

awk '{a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(i in a){print i,a[i]}}'  Input_file
awk '!b[$1]++{c[++i]=$1} {a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(j=1;j<=i;j++){print c[j],a[c[j]]}}'  Input_file
如果您希望以相同的输入文件顺序获得输出,那么以下内容可能会在相同的方面对您有所帮助

awk '{a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(i in a){print i,a[i]}}'  Input_file
awk '!b[$1]++{c[++i]=$1} {a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(j=1;j<=i;j++){print c[j],a[c[j]]}}'  Input_file

awk'!b[$1]+{c[++i]=$1}{a[$1]=a[$1]?a[$1]OFS$4:$4}{for(j=1;j以下
awk
可能对你同样有帮助

awk '{a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(i in a){print i,a[i]}}'  Input_file
awk '!b[$1]++{c[++i]=$1} {a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(j=1;j<=i;j++){print c[j],a[c[j]]}}'  Input_file
如果您希望以相同的输入文件顺序获得输出,那么以下内容可能会在相同的方面对您有所帮助

awk '{a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(i in a){print i,a[i]}}'  Input_file
awk '!b[$1]++{c[++i]=$1} {a[$1]=a[$1]?a[$1] OFS $4:$4} END{for(j=1;j<=i;j++){print c[j],a[c[j]]}}'  Input_file

awk'!b[$1]+{c[++i]=$1}{a[$1]=a[$1]?a[$1]of s$4:$4}END{for(j=1;j您的输入已排序

$ awk '{if($1==p) line=line OFS $4; 
        else {if(line) print line; p=$1; line=$1 OFS $4}} 
    END{print line}' file

您的输入已被订购

$ awk '{if($1==p) line=line OFS $4; 
        else {if(line) print line; p=$1; line=$1 OFS $4}} 
    END{print line}' file