你可以试试看
awk '{ o1=$1;o2=$2;o3=$3 $1=$2=$3="";gsub(" +","") _[o1 FS o2 FS o3]=_[o1 FS o2 FS o3] FS $0}END{ for(i in _) print i,_[i] }' file1 file2输出
$ ./shell.shfoo 1 scaf 3 4.5bar 2 scaf 3.3 1.00foo 1 boo 2.3
如果要省略不常见的行
awk 'FNR==NR{ s="" for(i=4;i<=NF;i++){ s=s FS $i } _[$1$2$3] = s next}{ printf $1 FS $2 FS $3 FS for(o=4;o<NF;o++){ printf $i" " } printf $NF FS _[$1$2$3]"n" } ' file2 file1输出
$ ./shell.shfoo 1 scaf 3 4.5bar 2 scaf 3.3 1.00



