AWK-匹配字段1,粘贴同一行中所有匹配列的字段2
我可以在Excel中执行以下操作,但效率很低。有人能帮我用AWK写这个逻辑吗?因为它是我正在学习的文件解析语言 逻辑 匹配字段1。打印字段1中的匹配字段值和所有匹配行中字段4的每个值,包括要匹配的行 输入文件: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
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