我该怎么做?
File1 看起来像这样:
foo 1 scaf 3 bar 2 scaf 3.3
File2 看起来像这样:
foo 1 scaf 4.5 foo 1 boo 2.3 bar 2 scaf 1.00
我想做的是找到 字段 1,2和3 相同时在 File1 和 File2 中同时出现的行。 __
有办法吗?
你可以试试看
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.sh foo 1 scaf 3 4.5 bar 2 scaf 3.3 1.00 foo 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.sh foo 1 scaf 3 4.5 bar 2 scaf 3.3 1.00